Jak napsat skript AutoHotkey

AutoHotkey je fantastický, ale komplikovaný software. Původně bylo zamýšleno znovu svázat vlastní klávesové zkratky s různými akcemi, ale nyní je to úplná sada pro automatizaci Windows.

AHK není zvlášť těžké se naučit pro nové uživatele, protože obecný koncept je poměrně jednoduchý, ale je to úplný Turingovsky kompletní programovací jazyk. Syntaxi si osvojíte mnohem snáze, pokud máte programátorské základy nebo znáte pojmy.

Instalace a používání AutoHotkey

Instalační proces AutoHotkey je přímočarý. Stáhněte si instalátor z oficiálních stránek a spusťte jej. Vyberte „Expresní instalace“. Po instalaci softwaru můžete kliknout pravým tlačítkem kamkoli a vybrat Nový > Skript AutoHotkey a vytvořit nový skript.

Skripty AHK jsou textové soubory s příponou .ahk. Pokud na ně kliknete pravým tlačítkem, získáte několik možností:

„Spustit skript“ načte váš skript pomocí běhového prostředí AHK.
„Compile Script“ jej spojí se spustitelným souborem AHK a vytvoří soubor EXE, který můžete spustit.
„Upravit skript“ otevře váš skript ve vašem výchozím textovém editoru. K psaní skriptů AHK můžete použít Poznámkový blok, ale doporučujeme používat SciTE4AutoHotkey, editor pro AHK, který podporuje zvýrazňování syntaxe a ladění.

Zatímco je skript spuštěn – ať už je to EXE nebo ne – najdete jej spuštěný na pozadí v oznamovací oblasti Windows, známé také jako systémová lišta. Hledejte zelenou ikonu s písmenem „H“.

Chcete-li skript ukončit, pozastavit, znovu načíst nebo upravit, klepněte pravým tlačítkem na ikonu oznámení a vyberte příslušnou možnost. Skripty poběží na pozadí, dokud je neukončíte. Samozřejmě také zmizí, když se odhlásíte ze systému Windows nebo restartujete počítač.

Jak AutoHotkey funguje?

V jádru AHK dělá jednu věc – váže akce na klávesové zkratky. Existuje mnoho různých akcí, kombinací klávesových zkratek a ovládacích struktur, ale všechny skripty budou fungovat na stejném principu. Zde je základní skript AHK, který spustí Google Chrome, kdykoli stisknete Windows+C:

#c::
Run Chrome
return

První řádek definuje klávesovou zkratku. Znak libry (#) je zkratka pro klávesu Windows a c je klávesa C na klávesnici. Poté následuje dvojitá dvojtečka (::), která označuje začátek akčního bloku.

Další řádek je akce. V tomto případě akce spustí aplikaci s příkazem Spustit. Blok je ukončen návratem na konci. Před návratem můžete provést libovolný počet akcí. Všechny budou střílet postupně.

Přesně tak jste definovali jednoduché mapování klíčů k akci. Do souboru .ahk jich můžete umístit tolik, kolik chcete, a nastavit jej tak, aby běžel na pozadí, vždy při hledání klávesových zkratek k přemapování.

Klávesové zkratky a modifikátory

Můžete najít úplný seznam modifikátorů AHK v oficiální dokumentaci, ale zaměříme se na nejužitečnější (a nejúžasnější) funkce.

Všechny modifikační klávesy mají jednoznakové zkratky. Například, # ! ^ + jsou Windows, Alt, Control a Shift. Pomocí modifikátorů můžete také rozlišit levý a pravý Alt, Control a Shift, což otevírá spoustu prostoru pro další klávesové zkratky. Například + je pravý Shift. Podívejte se na seznam klíčů za vše, na co můžete odkazovat. (Spoiler: Můžete odkazovat téměř na každou klávesu. Můžete dokonce odkazovat na jiná vstupní zařízení bez klávesnice pomocí a malé rozšíření).

Do jedné klávesové zkratky můžete kombinovat tolik kláves, kolik chcete, ale brzy vám dojdou kombinace kláves, které si zapamatujete. Zde přicházejí na řadu modifikátory, které vám umožní dělat bláznivější věci. Pojďme si rozebrat příklad z dokumentů AHK:

Zelená #IfWinActive se nazývá direktiva a aplikuje další kontext na klávesové zkratky fyzicky pod ní ve skriptu. Jakákoli klávesová zkratka po ní se spustí, pouze pokud je podmínka pravdivá, a můžete seskupit více klávesových zkratek pod jednu direktivu. Tato direktiva se nezmění, dokud nenarazíte na jinou direktivu, ale můžete ji resetovat prázdným #If (a pokud to vypadá jako hack, vítejte v AHK).

Direktiva zde kontroluje, zda je otevřené konkrétní okno, definované ahk_class Notepad. Když AHK obdrží vstup „Win+C“, spustí akci pod prvním #IfWinActive pouze v případě, že direktiva vrátí hodnotu true, a poté zkontroluje druhou, pokud ne. AHK má mnoho směrnic a všechny je najdete v dokumenty.

AutoHotkey má také horké řetězce, které fungují jako klávesové zkratky s výjimkou nahrazení celého řetězce textu. Je to podobné tomu, jak funguje autokorekce – ve skutečnosti existuje automatický opravný skript pro AHK — ale podporuje jakoukoli akci AHK.

Hotstring bude odpovídat řetězci pouze v případě, že je zadán přesně. Automaticky odstraní odpovídající text a nahradí také hotstring, i když toto chování lze upravit.

Akce

Akce v AHK je cokoli, co má vnější vliv na operační systém. AHK má spoustu akcí. Nemůžeme je vysvětlit všechny, proto vybereme některé užitečné.

Odesílání vstupu, ať už jde o text nebo různá stisknutí tlačítek.
Pohybování myší. Ve skutečnosti je AHK někdy chybně označeno jako cheat software pro videohry, protože s ním lidé vytvořili plně funkční aimboty.
Kliknutím myši, s umístěním vzhledem k aktuálnímu oknu.
Zobrazení dialogových nabídek, kompletní s formuláři a vstupními poli.
Přesouvání oken, nastavení velikosti a otevírání a zavírání.
Přehrávání hudby.
Zápis do registru Windows. Ano, opravdu.
Ú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 může dokonce zapisovat do souborů .ahk a upravovat svůj vlastní kód.

K většině z těchto akcí budou přidruženy také informačně orientované příkazy. Můžete například zapisovat do schránky, ale také můžete obsah schránky uložit do proměnné a spustit funkce, když se schránka změní.

Svázat to všechno s řídicími strukturami

AHK by nebylo tím, čím je, bez všech kontrolních struktur, které ho tvoří Turing-úplný.

Kromě direktiv #If máte také přístup k Li uvnitř akčních bloků. AHK má Pro smyčky, kudrnatá ortéza bloky, Snaž se a příkazy Catch 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é nebo objektů použít později. Můžete definovat vlastní funkce a štítky. Opravdu, cokoli, co byste mohli snadno dělat v jiném programovacím jazyce, můžete pravděpodobně dělat v AHK s trochou bolesti hlavy a prohlížením dokumentů.

Představte si například, že máte nudný, opakující se úkol, který vyžaduje, abyste klikali na několik tlačítek za sebou a čekali na odpověď serveru, než to budete dělat znovu donekonečna. K automatizaci můžete použít AHK. Chtěli byste definovat několik smyček, abyste přesunuli myš na konkrétní místa, klepněte a poté se přesuňte na další místo a klepněte znovu. Přihoďte pár čekacích prohlášení, aby se to nezlomilo. Můžete se o to dokonce pokusit číst barvu pixelů na obrazovce určit, co se děje.

Jedna věc je jistá – váš scénář pravděpodobně nebude hezký. Ale ani AutoHotkey, a to je v pořádku.