Blog (7)
Komentarze (191)
Recenzje (1)

Zautomatyzuj swoje życie, czyli prosty blog o AutoHotKey — epizod 4

Strona główna@BriHecatoZautomatyzuj swoje życie, czyli prosty blog o AutoHotKey — epizod 4
01.06.2018 01:16
275715

Po dłuższej przerwie wracamy do skryptowania. Jak zaspoilerowałem w jednym z komentarzy rzucimy dziś okiem na sterowanie myszką z poziomu skryptu.

Do czego się to może przydać? Może na przykład żeby kliknąć ikonkę w aplikacji której autor nie przewidział żadnego skrótu klawiszowego? Do rysowania w MS Paint? Czemu nie. Żeby zrobić sobie autoclicker? Jak najbardziej.

bDUNckGf

Zajrzyj do poprzedniego: Epizod 3

Polecenia

Najłatwiejszym w użyciu (i polecanym) jest to:

Click,  i/lub  i/lub 
bDUNckGl

Gołe polecenie bez jakiegokolwiek dopisanego parametru (opcji) jest kliknięciem lewym przyciskiem myszy (domyślnym) w bieżącym położeniu kursora myszki.

Zakładam jednak że będziemy chcieli kliknąć nie tam gdzie jest kursor tylko tam gdzie jest coś do kliknięcia:

Click, 87, 218

Podałem współrzędne gdzie znajduje się interesująca mnie rzecz do kliknięcia. Współrzędne te są liczone od lewego górnego narożnika okna. A można je odczytać za pomocą tej fajnej aplikacji WindowsSpy o której mówiłem poprzednio:

275726

Co ciekawe podane współrzędnych powoduje błyskawiczne przesunięcie myszki do tej określonej pozycji i tam wykonanie kliknięcia. Odpada zatem zupełnie stosowanie innego osobnego polecenia istniejącego w AHK - MouseMove.

bDUNckGm

Aby kliknąć innym przyciskiem wystarczy go wpisać w polecenie w dowolnym miejscu (nie zapominając przecinka) - może być przed współrzędnymi albo po nich, obie formy są poprawne.

Click, WheelUp, 650, 80

Click, 300, 50, X1/code

MouseClick

bDUNckGn

Ze względu na dowolność zapisu polecenia Click, nie przepadam za nim. W AHK równolegle występuje polecenie MouseClick, które różni się od Click ścisłym formatem zapisu oraz kilkoma kwestiami ściśle wewnętrznymi AHK, w których się nie doktoryzowałem. Można rzec że Click jest kliknięciem a MouseClick jest czymś w rodzaju wysłania kodu przycisku myszy. Mogą zdarzyć się sytuacje wyjątkowe gdzie aplikacja nie będzie przyjmowała któregoś polecenia - wtedy jest drugie.

MouseClick,  ,  ,  ,  ,  ,  , 

Pominięcie którejś informacji i tak wymaga wpisania określonej liczby przecinków. Jeśli chcielibyśmy wykonać 5 kliknięć prawym przyciskiem zapiszemy to tak:

MouseClick, right, , , 5
bDUNckGo

Wspominam o tym dlatego iż wiele poleceń w AHK ma podobną (ścisłą) składnię gdzie przecinkami oddziela się określone parametry i można określać nawet tylko jeden dowolny parametr (nie zapominając oczywiście określonej ilości przecinków). Np. omawiana w poprzednim odcinku dyrektywa #IfWinActive.

Wracając do klikania - parametry:

  • to: Left, Right, Middle, X1, X2, WheelUp, WheelDown, WheelLeft, WheelRight (nazwy te obowiązują także w poleceniu Click),
  • współrzędne oraz ilość kliknięć są chyba oczywiste,
  • - domyślna to 2, 0 to ruch natychmiastowy, a maksymalnie powolny to 100, jednak nie mam pewności czy ma to tu znaczenie (na pewno ma w poleceniu MouseMove),
  • jeżeli nie użyjemy tego parametru skrypt wie że chcemy kliknąć, jeśli wpiszemy "D" damy mu do zrozumienia że chcemy tylko wcisnąć klawisz, z kolei jeśli wpiszemy "U" oznaczać to będzie puszczenie klawisza (można to wykorzystać do przeciągania),
  • - literka "R" wpisana w tym miejscu będzie informacją że nie podajemy współrzędnych od lewego górnego rogu tylko współrzędne względne określone względem aktualnego położenia kursora - zatem 100, 0 przesunie kursor w prawo o 100 pikseli, a 0, -10 w gorę o 10 pikseli.

Zadanie domowe - dacie sobie rady ?

#IfWinActive, ahk_exe mspaint.exeXButton1::		MouseClick, , 100, 500, , , D	MouseClick, , 200, 220, , , U	MouseClick, , 200, 220, , , D	MouseClick, , 300, 500, , , U	MouseClick, , 145, 370, , , D	MouseClick, , 255, 370, , , U	MouseClick, , 350, 220, , , D	MouseClick, , 350, 500, , , U	MouseClick, , 500, 220, , , D	MouseClick, , 500, 500, , , U	MouseClick, , 350, 370, , , D	MouseClick, , 500, 370, , , U	MouseClick, , 550, 220, , , D	MouseClick, , 550, 500, , , U	MouseClick, , 550, 370, , , D	MouseClick, , 700, 220, , , U	MouseClick, , 550, 370, , , D	MouseClick, , 700, 500, , , UReturn,

Następny epizod - znajdziesz tutaj

bDUNckHb