Sådan skriver du et AutoHotkey-script

AutoHotkey er et fantastisk, men kompliceret stykke software. Det var oprindeligt beregnet til at genbinde brugerdefinerede genvejstaster til forskellige handlinger, men er nu en fuld Windows-automatiseringspakke.

AHK er ikke særlig svært at lære for nye brugere, da det generelle koncept er ret simpelt, men det er et fuldt Turing-komplet programmeringssprog. Du vil opfange syntaksen meget lettere, hvis du har en programmeringsbaggrund eller er fortrolig med begreberne.

Installation og brug af AutoHotkey

AutoHotkeys installationsproces er ligetil. Download installatør fra den officielle hjemmeside og kør den. Vælg “Express Installation”. Når du har installeret softwaren, kan du højreklikke hvor som helst og vælge New > AutoHotkey Script for at lave et nyt script.

AHK-scripts er tekstfiler med filtypenavnet .ahk. Hvis du højreklikker på dem, får du et par muligheder:

“Run Script” vil indlæse dit script med AHK runtime.
“Compile Script” vil bundte det med en AHK eksekverbar for at lave en EXE-fil, du kan køre.
“Rediger script” vil åbne dit script i din standard teksteditor. Du kan bruge Notesblok til at skrive AHK-scripts, men vi anbefaler at bruge SciTE4AutoHotkey, en editor til AHK, som understøtter syntaksfremhævning og fejlretning.

Mens et script kører – uanset om det er en EXE eller ej – vil du finde det kørende i baggrunden i Windows-meddelelsesområdet, også kendt som systembakken. Se efter det grønne ikon med et “H” på det.

For at afslutte, sætte på pause, genindlæse eller redigere et script skal du højreklikke på meddelelsesikonet og vælge en passende mulighed. Scripts fortsætter med at køre i baggrunden, indtil du afslutter dem. De forsvinder selvfølgelig også, når du logger ud af Windows eller genstarter din pc.

  Sådan vælger du din indkøbsliste-app i Google Home-appen

Hvordan virker AutoHotkey?

I sin kerne gør AHK én ting – binder handlinger til genvejstaster. Der er mange forskellige handlinger, hurtigtastkombinationer og kontrolstrukturer, men alle scripts vil fungere efter samme princip. Her er et grundlæggende AHK-script, der starter Google Chrome, hver gang du trykker på Windows+C:

#c::
Run Chrome
return

Den første linje definerer en genvejstast. Pundtegnet (#) er en forkortelse for Windows-tasten, og c er C-tasten på tastaturet. Derefter er der et dobbelt kolon (::) for at angive starten på en handlingsblok.

Den næste linje er en handling. I dette tilfælde starter handlingen et program med kommandoen Kør. Blokken afsluttes med en retur til sidst. Du kan udføre et vilkårligt antal handlinger før returneringen. De vil alle fyre sekventielt.

Lige sådan har du defineret en simpel nøgle-til-handling kortlægning. Du kan placere så mange af disse, som du vil, i en .ahk-fil og indstille den til at køre i baggrunden, altid på udkig efter genvejstaster, der skal omdannes.

Genvejstaster og modifikatorer

Du kan finde en komplet liste over AHK’s modifikatorer i officiel dokumentation, men vi vil fokusere på de mest nyttige (og fede) funktioner.

Ændringstaster har alle enkelttegns stenografi. For eksempel, # ! ^ + er henholdsvis Windows, Alt, Control og Shift. Du kan også skelne mellem venstre og højre Alt, Control og Shift med modifikatorerne, som åbner en masse plads til ekstra genvejstaster. For eksempel er + højre Shift. Tag et kig på nøgleliste for alt hvad du kan referere til. (Spoiler: Du kan referere til næsten hver eneste tast. Du kan endda henvise til andre inputenheder uden tastatur med en lille tilbygning).

Du kan kombinere så mange taster, som du vil, til én genvejstast, men du vil snart løbe tør for tastekombinationer at huske. Det er her, modifikatorer, som lader dig gøre mere skøre ting, kommer ind. Lad os nedsætte et eksempel fra AHK-dokumenterne:

  Intel Macs vs. Apple Silicon ARM Macs: Hvilken skal du købe?

Den grønne #IfWinActive kaldes et direktiv og anvender yderligere kontekst til genvejstaster fysisk under det i scriptet. Enhver genvejstast efter den udløses kun, hvis betingelsen er sand, og du kan gruppere flere genvejstaster under ét direktiv. Dette direktiv ændres ikke, før du rammer et andet direktiv, men du kan nulstille det med en tom #If (og hvis det virker som et hack, velkommen til AHK).

Direktivet her kontrollerer, om et specifikt vindue er åbent, defineret af ahk_class Notesblok. Når AHK modtager inputtet “Win+C”, vil den kun udløse handlingen under den første #IfWinActive, hvis direktivet returnerede sandt, og derefter kontrollere det andet, hvis det ikke gjorde det. AHK har en masse direktiver, og du kan finde dem alle i dokumenterne.

AutoHotkey har også hotstrings, som fungerer som genvejstaster bortset fra at erstatte en hel tekststreng. Dette svarer til, hvordan autokorrektur fungerer – faktisk er der en autokorrektur script for AHK – men understøtter enhver AHK-handling.

Hotstrengen matcher kun strengen, hvis den er skrevet nøjagtigt. Det vil automatisk fjerne den matchede tekst for også at erstatte hotstringen, selvom denne adfærd kan justeres.

Handlinger

En handling i AHK er alt, der har en udefrakommende effekt på styresystemet. AHK har en masse handlinger. Vi kan umuligt forklare dem alle, så vi udvælger nogle nyttige.

Sender input, hvad enten det er tekst eller diverse knaptryk.
Bevæger musen rundt. Faktisk er AHK nogle gange fejlagtigt markeret som snydesoftware til videospil, da folk har lavet fuldt fungerende aimbots med det.
Klik med musen, med positionering i forhold til det aktuelle vindue.
Viser dialogmenuer, komplet med formularer og inputfelter.
Flytning af vinduer, justering af størrelse og åbning og lukning.
Spiller musik.
Skrivning til Windows-registreringsdatabasen. Ja virkelig.
Ændring af indholdet af udklipsholderen.
Læse og skrive filer. Du kan gå gennem filer og køre handlinger på hver linje. AHK kan endda skrive til .ahk-filer og justere sin egen kode.

  Hvordan Alexa lytter efter Wake Words

De fleste af disse handlinger vil også have informationsorienterede kommandoer tilknyttet. For eksempel kan du skrive til udklipsholderen, men du kan også få indholdet af udklipsholderen til at gemme i en variabel og køre funktioner, når udklipsholderen ændres.

Forbind det hele med kontrolstrukturer

AHK ville ikke være, hvad det er uden alle de kontrolstrukturer, der gør det Turing-komplet.

Ud over #If-direktiverne har du også adgang til Hvis inde i handlingsblokke. AHK har Til sløjfer, krøllet bøjle blokke, Prøve og Catch-udtalelser og mange andre. Du kan få adgang til eksterne data fra handlingsblokken og gemme dem i variabler eller genstande til at bruge senere. Du kan definere brugerdefinerede funktioner og etiketter. Virkelig, alt, hvad du nemt kan gøre i et andet programmeringssprog, kan du sandsynligvis gøre i AHK med lidt hovedpine og et kig gennem dokumenterne.

Forestil dig for eksempel, at du har en kedelig, gentagne opgave, der kræver, at du klikker på flere knapper i træk og venter på, at en server svarer, før du gør det igen i det uendelige. Du kan bruge AHK til at automatisere dette. Du vil gerne definere et par sløjfer for at flytte musen til bestemte steder, klik og flyt derefter til næste sted og klik igen. Smid et par venteerklæringer ind, så det ikke går i stykker. Det kunne du endda prøve læse farven af ​​pixels på skærmen for at afgøre, hvad der sker.

En ting er sikkert – dit manuskript bliver nok ikke kønt. Men det er AutoHotkey heller ikke, og det er okay.