Hur man skriver ett AutoHotkey-skript

AutoHotkey är en fantastisk men komplicerad mjukvara. Det var från början avsett att binda om anpassade snabbtangenter till olika åtgärder men är nu en komplett Windows-automatiseringssvit.

AHK är inte särskilt svårt att lära sig för nya användare, eftersom det allmänna konceptet är ganska enkelt, men det är ett komplett, Turing-komplett programmeringsspråk. Du kommer att plocka upp syntaxen mycket lättare om du har en programmeringsbakgrund eller är bekant med begreppen.

Installera och använda AutoHotkey

AutoHotkeys installationsprocess är enkel. Ladda ner installatör från den officiella webbplatsen och kör den. Välj ”Snabbinstallation”. När du har installerat programvaran kan du högerklicka var som helst och välja New > AutoHotkey Script för att skapa ett nytt skript.

AHK-skript är textfiler med filtillägget .ahk. Om du högerklickar på dem får du några alternativ:

”Kör skript” kommer att ladda ditt skript med AHK-körtiden.
”Compile Script” kommer att bunta det med en AHK-körbar för att göra en EXE-fil som du kan köra.
”Redigera skript” öppnar ditt skript i din standardtextredigerare. Du kan använda Notepad för att skriva AHK-skript, men vi rekommenderar att du använder SciTE4AutoHotkeyen redigerare för AHK som stöder syntaxmarkering och felsökning.

Medan ett skript körs – oavsett om det är ett EXE eller inte – hittar du det i bakgrunden i meddelandefältet i Windows, även känt som systemfältet. Leta efter den gröna ikonen med ett ”H” på.

För att avsluta, pausa, ladda om eller redigera ett skript, högerklicka på meddelandeikonen och välj ett lämpligt alternativ. Skripten fortsätter att köras i bakgrunden tills du avslutar dem. De försvinner också när du loggar ut från Windows eller startar om din dator, naturligtvis.

Hur fungerar AutoHotkey?

I grunden gör AHK en sak – binder åtgärder till snabbtangenter. Det finns många olika åtgärder, snabbtangentskombinationer och kontrollstrukturer, men alla skript kommer att fungera på samma princip. Här är ett grundläggande AHK-skript som startar Google Chrome när du trycker på Windows+C:

#c::
Run Chrome
return

Den första raden definierar en snabbtangent. Pundtecknet (#) är en förkortning för Windows-tangenten och c är C-tangenten på tangentbordet. Efter det finns det ett dubbelt kolon (::) för att beteckna starten på ett åtgärdsblock.

Nästa rad är en handling. I det här fallet startar åtgärden ett program med kommandot Kör. Blocket avslutas med en retur i slutet. Du kan utföra hur många åtgärder som helst innan returen. De kommer alla att avfyras sekventiellt.

Precis så har du definierat en enkel nyckel-till-åtgärd-mappning. Du kan placera så många av dessa som du vill i en .ahk-fil och ställa in den så att den körs i bakgrunden, alltid leta efter snabbtangenter att mappa om.

Snabbtangenter och modifierare

Du kan hitta en fullständig lista över AHK:s modifierare i officiell dokumentationmen vi kommer att fokusera på de mest användbara (och coola) funktionerna.

Modifieringsnycklar har alla enstaka tecken. Till exempel, # ! ^ + är Windows, Alt, Control respektive Shift. Du kan också skilja mellan vänster och höger Alt, Control och Shift med modifierarna, vilket öppnar upp mycket utrymme för extra snabbtangenter. Till exempel är + höger Shift. Ta en titt på nyckellistan för allt du kan referera. (Spoiler: Du kan referera till nästan varje tangent. Du kan till och med referera till andra inmatningsenheter som inte är tangentbord med en liten förlängning).

Du kan kombinera så många tangenter du vill till en snabbtangent, men du kommer snart att ta slut på tangentkombinationer att komma ihåg. Det är här modifierare, som låter dig göra galnare saker, kommer in. Låt oss bryta ner ett exempel från AHK-dokumenten:

Den gröna #IfWinActive kallas ett direktiv och tillämpar ytterligare sammanhang på snabbtangenter fysiskt under det i skriptet. Alla snabbtangenter efter den aktiveras bara om villkoret är sant, och du kan gruppera flera snabbtangenter under ett direktiv. Detta direktiv kommer inte att ändras förrän du träffar ett annat direktiv, men du kan återställa det med en tom #If (och om det verkar som ett hack, välkommen till AHK).

Direktivet här kontrollerar om ett specifikt fönster är öppet, definierat av ahk_class Notepad. När AHK tar emot inmatningen ”Win+C”, kommer den att aktivera åtgärden under den första #IfWinActive endast om direktivet returnerade sant, och sedan kontrollera det andra om det inte gjorde det. AHK har många direktiv, och du kan hitta dem alla i dokumenten.

AutoHotkey har också varma strängar, som fungerar som snabbtangenter förutom att ersätta en hel textsträng. Det här liknar hur autokorrigering fungerar – det finns faktiskt en autokorrigeringsskript för AHK – men stöder alla AHK-åtgärder.

Hotsträngen matchar strängen endast om den är exakt skriven. Den kommer automatiskt att ta bort den matchade texten för att ersätta hotstringen också, även om detta beteende kan justeras.

Handlingar

En åtgärd i AHK är allt som har en extern effekt på operativsystemet. AHK har många åtgärder. Vi kan omöjligt förklara dem alla, så vi väljer ut några användbara.

Skickar inputoavsett om det är text eller olika knapptryckningar.
Flytta runt musen. Faktum är att AHK ibland felaktigt flaggas som fuskprogramvara för videospel, eftersom folk har gjort fullt fungerande aimbots med det.
Klicka med musenmed positionering i förhållande till det aktuella fönstret.
Visar dialogmenyerkomplett med formulär och inmatningsfält.
Flytta runt fönsterjustering av storlek och öppning och stängning.
Spelar musik.
Skriver till Windows-registret. Ja verkligen.
Ändra innehållet i Urklipp.
Läsa och skriva filer. Du kan gå igenom filer och köra åtgärder på varje rad. AHK kan till och med skriva till .ahk-filer och justera sin egen kod.

De flesta av dessa åtgärder kommer också att ha informationsorienterade kommandon associerade med dem. Du kan till exempel skriva till urklippet, men du kan också få innehållet i klippbordet att lagra i en variabel och köra funktioner när urklippet ändras.

Koppla ihop allt med kontrollstrukturer

AHK skulle inte vara vad det är utan alla kontrollstrukturer som gör det Turing-komplett.

Utöver #If-direktiven har du även tillgång till Om insidan av actionblock. AHK har För slingor, lockigt hängslen block, Prova och Catch-uttalanden och många andra. Du kan komma åt extern data från åtgärdsblocket och lagra den i variabler eller föremål att använda senare. Du kan definiera anpassade funktioner och etiketter. Verkligen, allt du kan göra enkelt på ett annat programmeringsspråk kan du förmodligen göra i AHK med lite huvudvärk och en titt i dokumenten.

Föreställ dig till exempel att du har en tråkig, repetitiv uppgift som kräver att du klickar på flera knappar i rad och väntar på att en server ska svara innan du gör det igen i oändlighet. Du kan använda AHK för att automatisera detta. Du skulle vilja definiera några slingor för att flytta musen till specifika platser, klicka och flytta sedan till nästa plats och klicka igen. Släng in några väntan uttalanden så att den inte går sönder. Du kan till och med försöka läs färgen på pixlar på skärmen för att avgöra vad som händer.

En sak är säker – ditt manus kommer förmodligen inte att vara vackert. Men det är inte AutoHotkey heller, och det är okej.