Jak napsat skript AutoHotkey

Photo of author

By etechblogcz

AutoHotkey představuje neuvěřitelně mocný nástroj, jehož komplexnost může na první pohled odradit. Původním záměrem bylo umožnit uživatelům přizpůsobit si klávesové zkratky pro různé akce, nicméně se vyvinul v plnohodnotný nástroj pro automatizaci úkolů v prostředí Windows.

Pro začátečníky nemusí být AHK příliš náročný, protože základní principy jsou poměrně srozumitelné. Nicméně, jedná se o plnohodnotný, Turingovsky kompletní programovací jazyk. Znalost základů programování nebo alespoň povědomí o programátorských konceptech vám usnadní pochopení syntaxe.

Instalace a používání AutoHotkey

Samotná instalace AutoHotkey je velmi jednoduchá. Stačí si stáhnout instalační soubor z oficiálních webových stránek a následně ho spustit. Doporučuje se zvolit „Expresní instalaci“. Po dokončení instalace můžete kdekoli kliknout pravým tlačítkem myši a v menu vybrat Nový > Skript AutoHotkey, čímž vytvoříte nový skript.

Skripty AHK jsou textové soubory s příponou .ahk. Po kliknutí na ně pravým tlačítkem myši se zobrazí několik možností:

„Spustit skript“ – aktivuje váš skript pomocí runtime prostředí AHK.

„Compile Script“ – převede skript do spustitelného souboru EXE, který je samostatně spustitelný.

„Upravit skript“ – otevře skript ve výchozím textovém editoru. Pro tvorbu skriptů v AHK sice postačí Poznámkový blok, nicméně se doporučuje používat editor
SciTE4AutoHotkey, který nabízí zvýrazňování syntaxe a možnosti ladění.

Pokud je skript aktivní – ať už ve formě EXE souboru nebo ne – naleznete ho běžící na pozadí v oznamovací oblasti systému Windows, často nazývané systémová lišta. Hledejte ikonu zelené barvy s písmenem „H“.

Pro ukončení, pozastavení, opětovné načtení nebo úpravu skriptu, klikněte pravým tlačítkem myši na ikonu v oznamovací oblasti a vyberte požadovanou akci. Skripty běží na pozadí, dokud je manuálně neukončíte. Samozřejmě se také ukončí, pokud se odhlásíte ze systému Windows nebo restartujete počítač.

Jak AutoHotkey funguje?

Základní funkcí AHK je přiřazování akcí ke klávesovým zkratkám. I když existuje velké množství různých akcí, kombinací klávesových zkratek a ovládacích struktur, všechny skripty fungují na stejném principu. Níže je uveden jednoduchý AHK skript, který spustí Google Chrome po stisknutí kláves Windows + C:

#c::
Run Chrome
return

První řádek definuje klávesovou zkratku. Znak # reprezentuje klávesu Windows a písmeno c klávesu C na klávesnici. Následuje dvojtečka (::), která označuje začátek akčního bloku.

Další řádek obsahuje akci. V tomto případě se jedná o spuštění aplikace pomocí příkazu Run. Blok se ukončí s příkazem return. Před příkazem return je možné provést libovolné množství akcí. Všechny se vykonají postupně.

Tímto způsobem jste vytvořili jednoduché přiřazení klávesy k akci. Do souboru s příponou .ahk můžete umístit neomezené množství takových definic a nechat je běžet na pozadí, kde budou neustále vyhledávat definované klávesové zkratky.

Klávesové zkratky a modifikátory

Úplný seznam modifikátorů AHK naleznete v oficiální dokumentaci, ale my se zaměříme na nejčastěji používané a nejužitečnější.

Všechny modifikační klávesy mají zkratky o délce jednoho znaku. Například, # ! ^ + zastupují Windows, Alt, Control a Shift. Modifikátory umožňují rozlišit mezi levým a pravým Altem, Controlem a Shiftem, což otevírá mnoho možností pro definování dalších klávesových zkratek. Například, + zastupuje pravý Shift. V seznamu kláves naleznete vše, na co se můžete odkazovat. Můžete se odkazovat téměř na každou klávesu a dokonce i na jiná vstupní zařízení bez klávesnice, za pomoci malého rozšíření.

Do jedné klávesové zkratky můžete kombinovat kolik chcete kláves, nicméně počet kombinací, které si dokážete zapamatovat, je omezený. Proto je užitečné znát a používat modifikátory, které otevírají další možnosti. Níže si rozebereme příklad z dokumentace AHK:

Zelená část s #IfWinActive se nazývá direktiva. Ta aplikuje další kontext na klávesové zkratky, které jsou pod ní uvedeny ve skriptu. Jakákoliv klávesová zkratka, která následuje po direktivě, se spustí pouze tehdy, pokud je podmínka pravdivá. Pod jednu direktivu můžete seskupit více klávesových zkratek. Direktiva se nezmění, dokud nenarazíte na jinou, nebo ji můžete vynulovat pomocí prázdného #If.

V uvedeném příkladu direktiva kontroluje, zda je otevřené okno definované jako Notepad pomocí ahk_class Notepad. AHK při obdržení vstupu „Win+C“ spustí akci definovanou pod prvním #IfWinActive pouze tehdy, pokud direktiva vrátí true. Pokud první podmínka není splněna, je kontrolována druhá. AHK nabízí mnoho různých direktiv. Všechny je naleznete v dokumentaci.

AutoHotkey také disponuje funkcí horkých řetězců, které fungují podobně jako klávesové zkratky s tím rozdílem, že nahrazují celý řetězec textu. Je to podobné funkci automatických oprav, kterou známe z textových editorů. Dokonce existuje i skript pro automatické opravy pro AHK, který podporuje jakoukoliv akci AHK.

Hotstring odpovídá řetězci pouze pokud je zadaný přesně. Automaticky odstraní odpovídající text a nahradí jej textem hotstringu. Toto chování lze upravit.

Akce

Akce v AHK je cokoliv, co má vnější dopad na operační systém. AHK nabízí velké množství akcí. Zde je výběr nejužitečnějších:

Odesílání vstupu, ať už se jedná o text nebo různé stisknutí tlačítek.
Pohybování myší. Díky této funkci bývá AHK mylně považován za cheat software pro videohry, protože s ním lidé vytvářejí plně funkční aimboty.
Klikání myší s umístěním relativně k aktuálnímu oknu.
Zobrazování dialogových menu včetně formulářů a vstupních polí.
Přesouvání oken, úprava jejich velikosti a otevírání i zavírání.
Přehrávání hudby.
Zápis do registru Windows.
Úprava obsahu schránky.
Čtení a zápis souborů. Můžete procházet soubory a spouštět akce na každém řádku. AHK dokáže zapisovat i do souborů s příponou .ahk a upravovat svůj vlastní kód.

Většina z těchto akcí je doprovázena informačně orientovanými příkazy. Například můžete zapisovat do schránky, ale také můžete uložit obsah schránky do proměnné a spouštět funkce při změně obsahu schránky.

Propojení s řídícími strukturami

AHK by nemohl dosáhnout své síly bez řídících struktur, díky kterým je Turing-kompletní.

Kromě direktivy #If máte přístup k If příkazům uvnitř akčních bloků. AHK disponuje také For cykly, složenými bloky, Try a Catch příkazy a mnoho dalších. Můžete přistupovat k externím datům z akčního bloku a ukládat je do proměnných nebo objektů pro pozdější použití. Můžete definovat vlastní funkce a návěští. V podstatě vše, co zvládnete v jiném programovacím jazyce, zvládnete i v AHK s trochou snahy a prostudování dokumentace.

Představte si, že máte nudný, opakující se úkol, který vyžaduje klikání na několik tlačítek za sebou a čekání na odezvu serveru. K automatizaci můžete použít AHK. Vytvořili byste několik smyček pro přesun myši na konkrétní místa, kliknutí a následně posun na další místo. Přidáte i pár příkazů pro čekání, aby se skript nepřerušil. Můžete i číst barvu pixelů na obrazovce, abyste určili stav systému.

Jedna věc je jistá – váš skript pravděpodobně nebude nejhezčí. Ale to ani AutoHotkey není, a je to v pořádku.