Како написати АутоХоткеи скрипту

AutoHotkey je izvanredan, ali ujedno i složen softver. Njegova prvobitna namena bila je redefinisanje prečica na tastaturi za različite operacije, ali se vremenom razvio u sveobuhvatan paket za automatizaciju Windows okruženja.

Za nove korisnike, AHK nije naročito težak za savladavanje, s obzirom na to da je osnovni koncept prilično jednostavan. Međutim, radi se o kompletnom programskom jeziku, koji je po svojoj prirodi Tjuring-kompletan. Ukoliko posedujete programersko iskustvo ili ste upoznati sa osnovnim konceptima programiranja, sintaksu ćete mnogo lakše razumeti.

Instalacija i upotreba AutoHotkey-a

Proces instalacije AutoHotkey-a je vrlo jednostavan. Potrebno je preuzeti instalacioni paket sa zvaničnog sajta i pokrenuti ga. Odaberite opciju „Express Installation“. Nakon uspešne instalacije, desnim klikom bilo gde i odabirom opcije New > AutoHotkey Script, možete kreirati novu skriptu.

AHK skripte su tekstualne datoteke sa ekstenzijom .ahk. Kada kliknete desnim tasterom na njih, dobićete nekoliko opcija:

„Run Script“ će učitati vašu skriptu pomoću AHK runtime-a.
„Compile Script“ će je povezati sa AHK izvršnom datotekom, stvarajući EXE datoteku koju možete samostalno pokretati.
„Edit Script“ će otvoriti vašu skriptu u podrazumevanom tekst editoru. Za pisanje AHK skripti možete koristiti Notepad, ali mi preporučujemo SciTE4AutoHotkey, editor namenjen za AHK koji nudi isticanje sintakse i opcije za pronalaženje grešaka.

Dok je skripta aktivna – bez obzira da li je u pitanju EXE ili nije – videćete je kako radi u pozadini u sistemskoj traci, koja je poznata i kao tray ikona. Potražite zelenu ikonu sa slovom “H” na njoj.

Za izlazak, pauziranje, ponovno učitavanje ili izmenu skripte, desnim klikom na ikonu u sistemskoj traci, odaberite odgovarajuću opciju. Skripte će se nastaviti izvršavati u pozadini sve dok ih ne isključite. Takođe će se automatski zatvoriti kada se odjavite sa Windows-a ili restartujete računar.

Kako AutoHotkey funkcioniše?

U svojoj osnovi, AHK obavlja jednu ključnu stvar – povezuje određene akcije sa kombinacijama tastera na tastaturi. Postoji mnogo različitih vrsta akcija, kombinacija tastera i kontrolnih struktura, ali sve skripte se zasnivaju na istom principu. Evo osnovne AHK skripte koja pokreće Google Chrome kad god pritisnete Windows taster + C:

#c::
Run Chrome
return

Prvi red definiše prečicu. Simbol tarabe (#) predstavlja Windows taster, a „c“ je taster „C“ na tastaturi. Dve tačke (::) označavaju početak akcionog bloka.

Naredni red je akcija koja se izvršava. U ovom slučaju, akcija koristi komandu „Run“ za pokretanje aplikacije. Blok se zatvara naredbom „return“. Možete izvršiti neograničen broj akcija pre povratka. Sve će se izvršavati redom.

Na ovaj način ste definisali jednostavno mapiranje tastera na određenu akciju. Možete definisati proizvoljan broj ovih mapiranja u .ahk datoteci i podesiti je da radi u pozadini, stalno osluškujući prečice za ponovno mapiranje.

Prečice i modifikatori

Kompletan spisak AHK modifikatora možete pronaći u zvaničnoj dokumentaciji, ali mi ćemo se usredsrediti na najkorisnije i najzanimljivije karakteristike.

Svi modifikatorski tasteri imaju jednoslovnu skraćenicu. Na primer, # ! ^ + predstavljaju Windows, Alt, Control i Shift taster, respektivno. Takođe možete razlikovati levi i desni Alt, Control i Shift taster korišćenjem specifičnih modifikatora, što otvara prostor za brojne dodatne prečice. Na primer, >+ je desni Shift taster. Detaljan spisak svih tastera koje možete referencirati nalazi se na listi ključeva. (Mala napomena: možete referencirati gotovo svaki taster, čak i druge ulazne uređaje koji nisu tastatura, koristeći dodatak).

Možete kombinovati proizvoljan broj tastera u jednoj prečici, ali ćete uskoro iscrpeti sve kombinacije koje je lako zapamtiti. Tu na scenu stupaju modifikatori, koji vam omogućavaju da radite kompleksnije stvari. Razmotrimo primer iz AHK dokumentacije:

Zeleni #IfWinActive se naziva direktivom i primenjuje dodatni kontekst na prečice koje se fizički nalaze ispod nje u skripti. Svaka prečica nakon nje će se aktivirati samo ako je uslov ispunjen, a možete grupisati više prečica pod jednom direktivom. Ova direktiva ostaje aktivna sve dok se ne naiđe na drugu, ali možete je poništiti koristeći praznu #If direktivu (ako vam ovo deluje kao hak, dobrodošli u AHK).

Direktiva ovde proverava da li je otvoren određeni prozor, definisan pomoću ahk_class Notepad. Kada AHK primi kombinaciju tastera “Win+C”, izvršiće akciju pod prvom #IfWinActive direktivom samo ako je njen uslov ispunjen, a zatim će proveriti drugu ukoliko prvi uslov nije bio tačan. AHK ima veliki broj direktiva, a možete ih pronaći u dokumentaciji.

AutoHotkey takođe poseduje hotstrings, koji funkcionišu slično prečicama, s tim što zamenjuju ceo niz teksta. Ovo je slično funkciji automatskog ispravljanja teksta – zapravo, postoji i skripta za automatsko ispravljanje za AHK – i podržava svaku AHK akciju.

Hotstring će se aktivirati samo ako je string teksta tačno otkucan. Automatski će ukloniti odgovarajući tekst kako bi ga zamenio hotstringom, ali ovo ponašanje se može prilagoditi.

Akcije

Akcija u AHK-u je sve što ima spoljašnji uticaj na operativni sistem. AHK nudi veliki broj akcija. Ne možemo ih sve detaljno objasniti, pa ćemo se fokusirati na neke korisne.

Slanje ulaza, bilo da je u pitanju tekst ili različiti pritisci tastera.
Pomeranje miša. AHK se ponekad greškom označava kao alat za varanje u video igrama, jer su ljudi uz njegovu pomoć kreirali funkcionalne aimbot-ove.
Kliktanje mišem, uz određivanje pozicije u odnosu na trenutni prozor.
Prikazivanje dijalog menija, zajedno sa obrascima i poljima za unos.
Pomeranje prozora, podešavanje veličine, otvaranje i zatvaranje istih.
Reprodukcija zvuka.
Upisivanje u Windows registar. Da, zaista.
Izmena sadržaja clipboard-a.
Čitanje i upisivanje datoteka. Možete obrađivati fajlove red po red i izvršavati akcije u svakom redu. AHK može čak i pisati u .ahk fajlove i modifikovati sopstveni kod.

Većina ovih akcija ima i komande za dobijanje informacija koje su povezane sa njima. Na primer, možete pisati u clipboard, ali takođe možete naterati da se sadržaj clipboard-a sačuva u varijablu i pokrene funkciju kada se njegov sadržaj promeni.

Povezivanje svega sa kontrolnim strukturama

AHK ne bi bio to što jeste bez svih kontrolnih struktura koje ga čine Tjuring-kompletnim.

Pored #If direktiva, takođe imate pristup If naredbi unutar akcionih blokova. AHK ima For petlje, blokove sa vitičastim zagradama, Try i Catch izraze i još mnogo toga. Možete pristupiti spoljnim podacima iz akcionog bloka i sačuvati ih u varijable ili objekte za kasniju upotrebu. Možete definisati prilagođene funkcije i labele. Zaista, sve što možete lako da uradite u nekom drugom programskom jeziku, verovatno možete uraditi i u AHK-u, uz malo truda i pregled dokumentacije.

Na primer, zamislite dosadan i repetitivan zadatak koji zahteva da kliknete na nekoliko tastera jedan za drugim i sačekate odgovor servera pre nego što ponovo to uradite, do beskonačnosti. Možete koristiti AHK da automatizujete ovaj proces. Definisali biste nekoliko petlji koje pomeraju miša na određene lokacije, kliknu, a zatim prelaze na sledeću lokaciju i kliknu ponovo. Dodali biste i nekoliko naredbi za čekanje, kako se skripta ne bi prekinula. Takođe možete pokušati da očitate boju piksela na ekranu da biste utvrdili šta se događa.

Jedno je sigurno – vaša skripta verovatno neće biti savršena. Ali nije ni AutoHotkey, i to je u redu.