Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Rekomendowane odpowiedzi

Opublikowano

Witam wszystkich.

Dopiero zaczynam moją przygode z AutoIt i mam problem otóż widziałem jak stworzyć program który klika dany przycisk lecz jak to zrobić na nieaktywnym oknie?

 

Mam zminimalizowaną grę i chciałbym że gdy kliknie np. F12 to się włącza PPM w tej aplikacji a gdy kliknie kolejny raz F12 to się wyłącza jest to możliwe?:)

 

Byłbym wdzięczny za pomoc.

 

Pozdrawiam.

Opublikowano

Proponuję wykorzystać controlsend, wszystko znajdziesz w tutorialu maćka przypiętym w dziale o Autoit, a skoro jesteś nowy to jak przeczytasz nie zaszkodzi ci nic, polecam także poczytać ustawianie przycisku na naciśnięty i normalny tryb. czyli up/down.

Opublikowano

myszką tak nie można sterować w aplikacji zminimalizowanej , zwłaszcza w AutoIt

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

A więc troszkę poczytałem i wykminiłem coś takiego nie wiem czy dobrze :

 

ControlSend("xw", "", MouseDown("right"))

 

ControlSend("xw", "", MouseUp("right"))

 

xw- to nazwa okna aplikacji

 

Jak zrobić coś w stylu : jeśli F12 wcisnięty then ControlSend("xw", "", MouseDown("right")) else ControlSend("xw", "", MouseUp("right")) ?:D

 

Nie zdażyłem przeczytać postów powyżej zanim to napisałem. Poszukam cos o sendInput i Postmessage, a da się w ogóle takie coś stworzyć w autoit?

Opublikowano

Myśle że HotKey będzię dobry. Tylko należy pamiętac że HotKey przechwytuje klawisz i trzeba go potem ręcznie dosłać

 

 

 

 

EDIT :

 

Nie wiem jak to dokładnie będzie działać i czy takie rozwiązanie będzie Ci pasowało.

liczylem na barce lecz ona niemogla wygrac.

Przez kibicow ktorzy przy rzutach roznych wolnych swiecili w messiego laserami

Opublikowano

Jeśli chodzi o symulację windowsa, to wszystko da się zrobić w AutoIt.

 

Ale na pewnym etapie będzie trochę zachodu.

 

Zamiast hotkeya lepiej jest zrobić low level keyboard hook.

 

Co do

Jak zrobić coś w stylu : jeśli F12 wcisnięty then ControlSend("xw", "", MouseDown("right")) else ControlSend("xw", "", MouseUp("right")) ?

 

To jeśli nie będziesz tego sprawdzał co sekunda, to GetAsyncKeyState się nada. Funcja _IsPressed(), biblioteka Misc.au3

Ta sygnatura jest pusta.

Opublikowano

jackraymund - dziękuję bardzo to co napisałeś działa.

 

Gdy klikam Pause skrypt się włącza i następuje nacisnięcie myszki po ponownym wciśnięciu Pause skrypt zatrzymuję się ale nie mogę wtedy nic w tle robić. Jakieś pomysły? chciałbym żeby skrypt działał również na zminimalizowanym oknie.

Opublikowano

nie dziwię sie że nic nie możesz robić skoro blokujesz obsługe myszki

 

ile razy ci tłumaczyć , nie będzie działał jak nie masz funkcji właściwej obsługi windows API , a nawet jeśli zadziała to TYLKO i WYŁĄCZNIE dla okna które jest AKTYWNE

myszka dział w oparciu o koordynaty EKRANU, koordynaty okna uruchomionego programu ( zobacz w OPT dla obsługi myszki ) , w zminimalizowanym programie ich nie ma to czego żadasz od programu by ci klikał w koordynaty których NIE MA W NIM w tym momencie

 

jeszcze jedna zasada, jak włączysz obsługę myszki w tle w systemie nie masz dostępu do myszki, bo robi ona co innego w tym momencie

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

Ehh...

 

Jest możliwe symulowanie kliknięć na oknie w tle lub zminimalizowanym.

 

Używa się do tego, jak wcześniej napisałem, funkcji PostMessage lub SendInput.

Ta sygnatura jest pusta.

Opublikowano

Robem - dziękuję za wytłumaczenie :) na pewno zapamiętam to :)

 

4ggr35510n - Spróbuje użyć PostMessage. Składnia wygląda tak:

 

PostMessage, Msg [, wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]

 

w Msg rozumiem że mam wpisać numery odpowiadające za wciśnięcie PPM i spuszczenie go czyli 0x204-down i 0x205-up. WinTitle to nazwa okna a resztę jak wypełnić ? Sama wiadomość i nazwa okna wystarczy czy konieczne jest wypełnianie reszty?

Opublikowano

O czym Ty mówisz ?

 

PostMessage(

 

__in_opt HWND hWnd,

__in UINT Msg,

__in WPARAM wParam,

__in LPARAM lParam

)

 

 

PostMessage

liczylem na barce lecz ona niemogla wygrac.

Przez kibicow ktorzy przy rzutach roznych wolnych swiecili w messiego laserami

Opublikowano

nie mówię że nie ma całkiem, tylko że możliwości Autoita troche to przekraczają przy dzisiejszych zabezpieczeniach gier i często silnikach gry

łatwo może napisać ale wprowadzić do uzycia trudniej, w jednej zadziała w innej nie będzie wcale działało albo tylko część funkcji. nie ma po prostu uniwersalnej idei na sposób.

 

popatrzcie choćby na przypadek Metina w którym u jednych działa zwykłe ControlSend u innych nie, a jeszcze u innych i myszka na dodatek nie chce działać sterowana przez bota. jak widac możliwości i wersji wiele

 

powiedzmy że uniwersalny będzie działał bez problemu z każdą aplikacją, ale w praktyce należy go dostosować w pewnych przypadkach do gry czy programu.

 

jeszcze jak dołożymy kwestie systemu operacyjnego , wyjdzie na to że trzeba by było pisać kilka wersji bota do różnych wersji gry i pod różnymi systemami operacyjnymi dla przykładu Cabal gdzie któryś z hacków czy botów działa tylko na systemie 64bitowym

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

×
×
  • Dodaj nową pozycję...