AutoHotkey, ofte forkortet til AHK, er en utrolig kraftfull, men samtidig kompleks programvare. Opprinnelig var den designet for å koble egendefinerte hurtigtaster til spesifikke handlinger, men har utviklet seg til å bli en fullverdig Windows-automatiseringsløsning.
Selv om AHK kan virke overveldende for nybegynnere, er det grunnleggende konseptet relativt lett å forstå. Det er likevel et fullstendig programmeringsspråk som er Turing-komplett. Hvis du har erfaring med programmering, vil du sannsynligvis oppleve at syntaksen er mye lettere å mestre.
Installasjon og bruk av AutoHotkey
Installasjonsprosessen for AutoHotkey er ganske rett frem. Du laster ned installasjonsprogrammet fra den offisielle nettsiden, som du finner her, og kjører filen. Velg deretter «Ekspressinstallasjon». Når installasjonen er fullført, kan du høyreklikke hvor som helst og velge Ny > AutoHotkey Script for å opprette et nytt skript.
AHK-skript er tekstfiler med filtypen .ahk. Når du høyreklikker på en slik fil, får du flere valg:
«Kjør skript» vil laste skriptet ditt ved hjelp av AHK-runtime.
«Kompiler skript» vil konvertere det til en AHK-kjørbar fil (EXE) som du kan kjøre uavhengig.
«Rediger skript» åpner skriptet ditt i standard tekstredigeringsprogram. Selv om Notepad kan brukes, anbefales det å benytte en editor som SciTE4AutoHotkey, som tilbyr syntaksutheving og feilsøkingsfunksjoner spesielt for AHK.
Når et skript kjører, enten som en EXE eller ikke, vil du se det operere i bakgrunnen i Windows systemstatusfelt, også kjent som «system tray». Se etter et grønt ikon med en «H».
For å avslutte, pause, laste inn på nytt eller redigere et skript, høyreklikker du på varslingsikonet og velger det ønskede alternativet. Skript vil fortsette å kjøre i bakgrunnen inntil du avslutter dem. De vil også bli avsluttet når du logger av Windows eller starter datamaskinen på nytt.
Hvordan fungerer AutoHotkey?
I bunn og grunn gjør AHK én ting: den kobler handlinger til hurtigtaster. Det finnes et bredt spekter av handlinger, hurtigtastkombinasjoner og kontrollstrukturer, men alle skript opererer etter samme prinsipp. Her er et enkelt AHK-skript som starter Google Chrome hver gang du trykker Windows+C:
#c:: Run Chrome return
Den første linjen definerer en hurtigtast. Pundtegnet (#) er en snarvei for Windows-tasten, og «c» representerer C-tasten på tastaturet. Dobbelkolonet (::) markerer starten på en handlingsblokk.
Den neste linjen er en handling. I dette tilfellet starter handlingen et program med kommandoen «Run». Blokken avsluttes med «return». Du kan inkludere så mange handlinger du vil før «return». De vil alle utføres i rekkefølge.
På den måten har du definert en enkel tilordning av en tast til en handling. Du kan legge til så mange slike tilordninger du ønsker i en .ahk-fil og la den kjøre i bakgrunnen for å overvåke og aktivere de omdefinerte hurtigtastene dine.
Hurtigtaster og modifikatorer
En fullstendig liste over AHKs modifikatorer finner du i offisiell dokumentasjon, men vi vil fokusere på de mest nyttige og spennende funksjonene.
Modifikatortaster har alle forkortelser med ett tegn. For eksempel er #, !, ^ og + respektivt Windows, Alt, Control og Shift. Du kan også skille mellom venstre og høyre Alt, Control og Shift ved hjelp av modifikatorer, noe som gir mange muligheter for flere hurtigtaster. For eksempel er +< høyre Shift. Ta en titt på tastelisten for å se hva du kan referere til (spoiler: du kan referere til nesten hver tast). Du kan til og med referere til andre inndataenheter enn tastaturet med en liten utvidelse.
Du kan kombinere så mange taster du vil til én hurtigtast, men du vil fort gå tom for kombinasjoner å huske. Det er her modifikatorer, som lar deg gjøre mer avanserte ting, kommer inn i bildet. La oss se på et eksempel fra AHK-dokumentasjonen:
Den grønne #IfWinActive er et direktiv som legger til ekstra kontekst til hurtigtaster som befinner seg fysisk under det i skriptet. Hurtigtaster som kommer etter dette direktivet, vil bare utløses dersom betingelsen er sann. Du kan gruppere flere hurtigtaster under ett direktiv. Direktiver vil ikke endre seg før et nytt direktiv oppstår. Du kan også tilbakestille det med en tom #If (og hvis dette høres ut som en hack, er du velkommen til AHK).
Direktivet sjekker om et spesifikt vindu er åpent, definert av ahk_class Notepad. Når AHK mottar inndataen «Win+C», vil det utløse handlingen under den første #IfWinActive bare dersom direktivet returnerte sant. Hvis ikke, vil den sjekke det andre direktivet. AHK har mange direktiver som du kan finne i dokumentasjonen.
AutoHotkey har også hotstrings som fungerer som hurtigtaster, men som erstatter en hel tekststreng. Dette ligner på hvordan autokorrektur fungerer. Det finnes faktisk et autokorrekturskript for AHK som støtter alle AHK-handlinger.
Hotstringen vil bare samsvare dersom teksten skrives nøyaktig. Den vil automatisk fjerne den samsvarende teksten for å erstatte hotstringen, men denne oppførselen kan justeres.
Handlinger
En handling i AHK er alt som har en ytre effekt på operativsystemet. AHK har mange handlinger. Det er umulig å forklare dem alle, så her er noen nyttige eksempler:
Sende inndata, enten det er tekst eller ulike knappetrykk.
Flytte musen rundt. AHK har faktisk blitt feilaktig flagget som jukseprogramvare for videospill, da folk har brukt det til å lage aimbots.
Klikke med musen, med en bestemt posisjon i forhold til det aktive vinduet.
Vise dialogmenyer, med skjemaer og inndatafelt.
Flytte rundt på vinduer, endre størrelse, åpne og lukke dem.
Spille musikk.
Skrive til Windows-registeret. Ja, det er virkelig sant.
Endre innholdet på utklippstavlen.
Lese og skrive filer. Du kan behandle filer og kjøre handlinger på hver linje. AHK kan til og med skrive til .ahk-filer og justere sin egen kode.
De fleste av disse handlingene har også informasjonsorienterte kommandoer knyttet til seg. For eksempel kan du skrive til utklippstavlen, men du kan også lagre innholdet i utklippstavlen i en variabel og kjøre funksjoner når utklippstavlen endres.
Kombinere det hele med kontrollstrukturer
AHK ville ikke vært det det er uten kontrollstrukturene som gjør det Turing-komplett.
I tillegg til #If-direktiver, har du også tilgang til If i handlingsblokker. AHK har For-løkker, krøllparentes-blokker, Try– og Catch-uttalelser, i tillegg til mange andre. Du kan få tilgang til eksterne data fra en handlingsblokk og lagre dem i variabler eller objekter for bruk senere. Du kan definere egendefinerte funksjoner og etiketter. Egentlig kan alt du enkelt kan gjøre i et annet programmeringsspråk, sannsynligvis gjøres i AHK med litt innsats og en gjennomgang av dokumentasjonen.
Tenk deg at du har en kjedelig, repeterende oppgave som krever at du klikker på flere knapper i rekkefølge og venter på at en server svarer før du gjør det igjen. Du kan bruke AHK for å automatisere dette. Du kan definere noen løkker som flytter musen til bestemte steder, klikker og flytter deretter til neste sted og klikker igjen. Legg inn noen ventekommandoer for at det ikke skal krasje. Du kan til og med forsøke å lese fargen på piksler på skjermen for å finne ut hva som skjer.
En ting er sikkert: skriptet ditt vil sannsynligvis ikke være pent. Men det er heller ikke AutoHotkey, og det er helt greit.