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 komplet 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 komplet, Turing-komplet programmeringssprog. Du vil afhente syntaksen meget lettere, hvis du har en programmeringsbaggrund eller er bekendt med begreberne.

Installation og brug af AutoHotkey

AutoHotkeys installationsproces er ligetil. Download installationsprogrammet fra det officielle websted, og kør det. Vælg "Hurtig installation". Når du har installeret softwaren, kan du højreklikke hvor som helst og vælge Ny> AutoHotkey Script for at oprette et nyt script.

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

  • "Kør script" indlæser dit script med AHK-runtime.
  • “Compile Script” vil pakke det med en AHK-eksekverbar fil for at oprette en EXE-fil, du kan køre.
  • "Rediger script" åbner dit script i din standardteksteditor. Du kan bruge Notepad til at skrive AHK-scripts, men vi anbefaler at bruge SciTE4AutoHotkey, en editor til AHK, der understøtter syntaksfremhævning og debugging.

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

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

Hvordan fungerer AutoHotkey?

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

#c :: Kør Chrome-retur

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 betegne starten på en handlingsblok.

Den næste linje er en handling. I dette tilfælde starter handlingen et program med Run kommandoen. Blokken er færdig med en return i slutningen. Du kan foretage et vilkårligt antal handlinger før return. De skyder alle fortløbende.

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

Genvejstaster og modifikatorer

Du kan finde en komplet liste over AHKs modifikatorer i officiel dokumentation, men vi fokuserer på de mest nyttige (og seje) funktioner.

Modifikationstaster har alle enkeltkarakterer. For eksempel # ! ^ +er henholdsvis Windows, Alt, Control og Shift. Du kan også skelne mellem venstre og højre Alt, Control og Shift med <og >modifikatorerne, hvilket åbner meget plads til ekstra genvejstaster. For eksempel er + højre Skift. Se på nøgellisten for alt, hvad du kan henvise til. (Spoiler: Du kan henvise til næsten alle nøgler. Du kan endda henvise til andre ikke-tastaturinputenheder med en lille udvidelse).

Du kan kombinere så mange taster som du vil i en genvejstast, men du løber snart tør for tastekombinationer for at huske. Dette er hvor modifikatorer, der lader dig gøre skørere ting, komme ind. Lad os nedbryde et eksempel fra AHK-dokumenterne:

Det grønne #IfWinActivekaldes et  direktiv og anvender yderligere kontekst til genvejstaster, der fysisk er under det i scriptet. Enhver genvejstast efter den aktiveres kun, hvis betingelsen er sand, og du kan gruppere flere genvejstaster under et direktiv. Dette direktiv ændres ikke, før du rammer et andet direktiv, men du kan nulstille det med et tomt #If(og hvis det virker som et hack, velkommen til AHK).

Direktivet her kontrollerer, om et bestemt vindue er åbent, defineret af ahk_class Notepad. Når AHK modtager input "Win + C", vil det kun affyre handlingen under den første #IfWinActive , hvis direktivet returneres som sandt, og derefter kontrollere det andet, hvis det ikke gjorde det. AHK har mange direktiver, og du kan finde dem alle i dokumenterne.

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

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

Handlinger

En handling i AHK er alt, hvad der påvirker operativsystemet udefra. AHK har mange handlinger. Vi kan umuligt forklare dem alle, så vi vælger nogle nyttige.

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

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 gemmes i en variabel og køre funktioner, når udklipsholderen ændres.

Binde det hele med kontrolstrukturer

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

Ud over #Ifdirektiverne har du også adgang til If indersiden af ​​handlingsblokke. AHK har For løkker, krøllede bøjleblokke Try og Catchudsagn og mange andre. Du kan få adgang til eksterne data fra handlingsblokken og gemme dem i variabler eller objekter, der skal bruges senere. Du kan definere brugerdefinerede funktioner og etiketter. Virkelig, alt hvad du kunne gøre let på 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 reagerer, før du gør det igen ad uendelig. Du kan bruge AHK til at automatisere dette. Du vil gerne definere et par sløjfer for at flytte musen til bestemte placeringer, klik på, og flyt derefter til det næste sted og klik igen. Kast et par ventetilkendegivelser, så det ikke går i stykker. Du kan endda prøve at læse farven på pixels på skærmen for at bestemme, hvad der sker.

En ting er sikkert - dit script vil sandsynligvis ikke være smukt. Men heller ikke AutoHotkey, og det er okay.