AutoHotkey är ett kraftfullt, men samtidigt komplext, verktyg. Ursprungligen skapat för att omdefiniera snabbkommandon till olika funktioner, har det nu utvecklats till en komplett lösning för Windows-automation.
För nybörjare kan AHK upplevas som relativt lätt att lära sig, då grundkonceptet är ganska enkelt. Dock är det faktiskt ett fullfjädrat, Turing-komplett programmeringsspråk. Om du har erfarenhet av programmering eller är bekant med grundläggande begrepp inom detta område, kommer du att ha mycket lättare att förstå syntaxen.
Installera och komma igång med AutoHotkey
Installationsprocessen för AutoHotkey är okomplicerad. Ladda ner installationsfilen från den officiella webbplatsen här och starta den. Välj ”Expressinstallation”. När programvaran är installerad kan du högerklicka var som helst och välja ”Nytt” > ”AutoHotkey Script” för att generera ett nytt skript.
AHK-skript är textdokument som har filändelsen .ahk. Genom att högerklicka på dessa filer får du tillgång till ett antal alternativ:
”Kör skript” initierar ditt skript med AHK-körtiden.
”Kompilera skript” packar det tillsammans med en AHK-körfil för att skapa en EXE-fil som kan köras.
”Redigera skript” öppnar ditt skript i den standardmässiga textredigeraren. Även om det är möjligt att skriva AHK-skript i Anteckningar, rekommenderas det att använda SciTE4AutoHotkey, en redigerare speciellt anpassad för AHK med funktioner som syntaxmarkering och felsökning.
När ett skript körs, oavsett om det är en EXE-fil eller inte, hittar du det i bakgrunden i Windows meddelandefält, även kallat systemfältet. Leta efter den gröna ikonen som visar ett ”H”.
För att avsluta, pausa, ladda om eller redigera ett skript, högerklicka på ikonen i meddelandefältet och välj lämpligt alternativ. Skripten fortsätter att fungera i bakgrunden tills du stänger av dem. De stängs också när du loggar ut från Windows eller startar om datorn.
Hur fungerar AutoHotkey?
I grund och botten utför AHK en huvuduppgift: att koppla åtgärder till snabbkommandon. Det finns många olika åtgärder, snabbkombinationer och kontrollstrukturer, men alla skript fungerar enligt samma princip. Här är ett grundläggande AHK-skript som startar Google Chrome när du trycker på Windows-tangenten + C:
#c:: Run Chrome return
Den första raden definierar ett snabbkommando. Tecknet # är en förkortning för Windows-tangenten och c är C-tangenten på tangentbordet. Därefter finns ett dubbelt kolon (::) som markerar början på ett åtgärdsblock.
Nästa rad är en åtgärd. I detta fall startar åtgärden ett program med kommandot Run. Blocket avslutas med return i slutet. Du kan inkludera valfritt antal åtgärder innan return. De kommer alla att köras i sekvens.
På detta sätt har du skapat en enkel nyckel-till-åtgärd-mappning. Du kan lägga till så många av dessa som du vill i en .ahk-fil och ställa in den att köras i bakgrunden och kontinuerligt övervaka snabbkommandon för att ommappa.
Snabbtangenter och modifierare
En komplett lista över AHK:s modifierare finns i den officiella dokumentationen, men här koncentrerar vi oss på de mest praktiska (och intressanta) funktionerna.
Modifierartangenter har alla enstaka symboler. Till exempel är #, !, ^ och + Windows, Alt, Control respektive Shift. Du kan också skilja mellan vänster och höger Alt, Control och Shift genom att använda modifierare, vilket ger stor flexibilitet för fler snabbkommandon. Till exempel är +> höger Shift. Ta en titt på nyckellistan för all information. (Spoiler: Du kan referera till nästan varje tangent. Det är till och med möjligt att referera till andra inmatningsenheter än tangentbord via en mindre utökning).
Du kan kombinera hur många tangenter som helst till ett snabbkommando, men du kommer snart att få ont om tangentkombinationer att komma ihåg. Det är här modifierare, som tillåter dig att göra mer avancerade saker, kommer in i bilden. Låt oss studera ett exempel från AHK-dokumentationen:
Den gröna #IfWinActive kallas ett direktiv och applicerar ytterligare kontext på snabbkommandon fysiskt under det i skriptet. Alla snabbkommandon efter det aktiveras bara om villkoret är uppfyllt, och du kan gruppera flera snabbkommandon under ett direktiv. Detta direktiv kommer inte att förändras förrän du möter ett annat direktiv, men du kan återställa det med en tom #If (om det här verkar som en 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” aktiverar det åtgärden under det första #IfWinActive endast om direktivet returnerade sant, och går sedan vidare till det andra om det inte gjorde det. AHK har många direktiv, och de hittar du alla i dokumenten.
AutoHotkey har även hotstrings, som fungerar på samma sätt som snabbkommandon men ersätter en hel textsträng. Det här liknar funktionen för autokorrigering, och det finns faktiskt ett autokorrigeringsskript för AHK, men de stödjer alla AHK-åtgärder.
En hotstring matchar strängen endast om den är exakt skriven. Den kommer automatiskt att ta bort den matchade texten för att ersätta hotstringen, men det här beteendet kan justeras.
Åtgärder
En åtgärd i AHK är allting som påverkar operativsystemet på ett märkbart sätt. AHK har många olika åtgärder. Vi kan inte täcka dem alla här, så vi lyfter fram några användbara alternativ:
- Skickar inmatning, vare sig det handlar om text eller knapptryckningar.
- Flyttar runt musen. Det händer faktiskt att AHK ibland felaktigt markeras som fuskprogramvara för dataspel, eftersom folk har gjort fullt fungerande aimbots med det.
- Klickar med musen med positionering relativt det aktuella fönstret.
- Visar dialogmenyer, kompletta med formulär och inmatningsfält.
- Flyttar runt fönster, justerar storlek, öppnar och stänger.
- Spelar upp musik.
- Skriver till Windows-registret. Ja, faktiskt.
- Ändrar innehållet i Urklipp.
- Läser och skriver till filer. Du kan gå igenom filer och utfö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 har också informationsrelaterade kommandon associerade med sig. Till exempel kan du skriva till urklippet, men du kan även lagra innehållet i urklippet i en variabel och köra funktioner när urklippet ändras.
Kombinera allt med kontrollstrukturer
AHK hade inte varit vad det är utan alla kontrollstrukturer som gör det Turing-komplett.
Förutom #If-direktiven har du även tillgång till If-satser inuti åtgärdsblock. AHK har For-loopar, måsvingeblock, Try– och Catch-satser och många andra funktioner. Du kan komma åt extern data från åtgärdsblocket och lagra det i variabler eller objekt för senare användning. Du kan definiera anpassade funktioner och etiketter. Allting du kan göra enkelt i andra programmeringsspråk kan du antagligen göra i AHK med lite ansträngning och ett besök i dokumentationen.
Föreställ dig till exempel en tråkig, repetitiv uppgift som kräver att du klickar på flera knappar i följd och väntar på ett svar från en server innan du gör det igen och igen. Du kan använda AHK för att automatisera den här processen. Du skulle behöva definiera loopar för att flytta musen till specifika punkter, klicka och sedan flytta till nästa punkt och klicka igen. Lägg till några väntelägen så att det inte går fel. Du kan även försöka läsa färgen på pixlar på skärmen för att avgöra vad som händer.
En sak är säker – ditt skript kommer troligen inte att vara vackert. Men det är inte AutoHotkey heller, och det är okej.