AutoHotkey is een populaire en bijzondere scripttaal voor Windows. Het ontbreekt Windows niet aan mogelijkheden om processen te automatiseren. Met batchbestanden, PowerShell-scripts en de Windows Script Host en bijbehorende talen VBScript en JScript kun je bijna alle aspecten beïnvloeden van het besturingssysteem en de bijbehorende configuratie. Een alternatief dat daar al jaren succesvol in slaagt is AutoHotkey.
Met AutoHotkey kun je willekeurige opdrachten laten uitvoeren via een toetsencombinatie, maar ook vensters manipuleren. Net zoals met de eigen scripttalen van Windows, kun je met AutoHotkey typische scripttaken uitvoeren. Voorbeelden zijn het kopiëren, verplaatsen en wissen van bestanden, registeritems toevoegen en externe programma’s starten met een uitgebreide lijst parameters.
Wat AutoHotkey Bijzonder Maakt
AutoHotkey-scripts kunnen ook dingen die je bij andere talen tevergeefs zult zoeken. Zo kun je er vrij eenvoudig scripts mee maken die aanvankelijk helemaal niets doen, maar die zich als pictogram nestelen in het systeemvak. Daar wachten ze tot je de in het script gedefinieerde toetsencombinatie indrukt. En dan pas worden de geprogrammeerde opdrachten uitgevoerd.
Als AutoHotkey-programmeur beschik je onder andere over functies die muis- en toetsenbordinvoer simuleren. Dat maakt AutoHotkey-scripts ook heel geschikt om bijvoorbeeld lange, telkens identieke procedures in willekeurige programma’s te automatiseren of vervelende dialoogvensters automatisch te laten wegklikken.
AutoHotkey biedt verder functies waarmee je eigenschappen van vensters kunt beïnvloeden. Daarmee kun je vensters met een script bijvoorbeeld nauwkeurig positioneren, van grootte veranderen of naar de voor- of achtergrond verplaatsen. Scripts kunnen zelfs eigen vensters tonen met knoppen, lijsten en invoervakken.
Lees ook: Hoe auto afschrijving berekenen?
Versies van AutoHotkey
Bij het schrijven van dit artikel ging het om versie 1.1.30.03. De ook nog beschikbare versie 1.0.x is alleen nodig als je een heel oud script zou willen gebruiken dat niet overweg kan met versie 1.1. Er wordt gewerkt aan versie 2.0, maar die bevindt zich nog in een vroeg stadium en is niet geschikt voor productief gebruik.
Installatie en Editors
Het installeren is snel gedaan en de opties in het set-upprogramma kun je doorgaans accepteren. AutoHotkey-scripts zijn eenvoudige tekstbestanden met de extensie .ahk. Je kunt ze in principe met elke teksteditor bewerken, zelfs met Windows’ eigen Kladblok. Maar waarschijnlijk wil je wat meer gebruiksgemak.
Het hulpbestand van AutoHotkey bevat een sectie ‘Edit’. Daar staan enkele editors, die syntax-highlighting en andere handige functies bieden voor scriptontwikkelaars. We hebben goede ervaringen met het programma SciTE4-AutoHotkey. Speciaal voor AutoHotkey geschikte editors vergemakkelijken het schrijven van scripts.
Hotstrings: Snel Tekst Vervangen
Voor het eenvoudigste type AutoHotkey-scripts heb je niet eens een aparte editor of enige programmeerkennis nodig. De AutoHotkey-documentatie noemt dat ‘hotstrings’. Het gaat daarbij om een zelfgekozen afkorting tussen twee paar dubbele punten, gevolgd door de tekst waar het voor staat. Als een script met hotstrings is geladen, houdt AutoHotkey in de gaten of je in een willekeurig venster de betreffende afkorting intypt. Die wordt dan vervangen door de tekst die achter het tweede paar dubbele punten staat.
Standaard moet je de afkorting als apart woord intypen om de hotstring te activeren. Dat betekent dat er een scheidingsteken zoals een spatie, tab, return of leesteken voor moet staan en ook erna getypt moet worden. Je kunt bovendien de werking van een hotstring aanpassen door tussen de eerste twee dubbele punten een of meer opties toe te voegen in de vorm van speciale tekens. Zo geeft een * aan dat op de afkorting geen scheidingsteken hoeft te volgen en zorgt een ? ervoor dat er geen scheidingsteken vooraf nodig is. Met B0 (met cijfer nul) zorg je ervoor dat de afkorting niet wordt weggehaald voordat de vervanging wordt ingevoegd en een o (de letter o) zorgt ervoor dat niet alleen de afkorting, maar ook het scheidingsteken wordt weggehaald. Meer opties staan in het AutoHotkey-hulpbestand in de sectie ‘Hotstrings’.
Lees ook: Vind de perfecte autodealer in Huizen
De vervangingstekst mag daarbij speciale tekens bevatten. Bovendien kunnen ze (web)ontwikkelaars het werk vergemakkelijken.
How to use Hotstrings in AutoHotkey - AutoHotkey Tutorial #3
Scripts Laden en Uitvoeren
Het AutoHotkey-installatieprogramma zorgt ervoor dat je .ahk-bestanden eenvoudigweg kunt openen door erop te dubbelklikken in Verkenner. Je kunt de bestandsnaam eventueel ook meegeven als argument bij het starten van AutoHotkey.exe. Dat is bijvoorbeeld handig als je een bepaald script altijd wilt laden bij het starten van Windows.
Typ daarvoor shell:startup op de adresbalk van Windows Verkenner om de map Opstarten te openen. Maak daarin een nieuwe snelkoppeling en geef als doel iets op als "C:\Program Files\AutoHotkey\AutoHotkey.exe" "C:\Users\Alice\Documents\MijnScript.ahk". De specifieke padnamen moet je afstemmen op je situatie.
AutoHotkey in het Systeemvak
Als een script hotstrings bevat (of de verderop beschreven hotkeys), dan blijven die na het verwerken van eventuele scriptcode beschikbaar. AutoHotkey blijft actief op de achtergrond en verschijnt als een pictogram in het systeemvak (een witte H op een groene achtergrond). Het snelmenu daarvan bevat de opdracht ‘Exit’, waarmee je het script kunt afsluiten. ‘Suspend Hotkeys’ schakelt alleen het verwerken van hotstrings en hotkeys uit, en met ‘Pause Script’ pauzeer je het hele script tijdelijk.
De overige opdrachten zijn daarbij vooral interessant voor script-ontwikkelaars. ‘Edit This Script’ opent het script in de gekoppelde editor, ‘Reload This Script’ laadt het opnieuw na wijzigingen.
Lees ook: Elektrische Auto Pechhulp
Dynamische Tekstfragmenten
Het is mogelijk om AutoHotkey alleen te gebruiken voor tekstfragmenten en autocorrectie van typfouten, maar daarmee benut je lang niet alle mogelijkheden van het programma. Het gaat tenslotte om een scripttaal. Een tussenstap van tekstvervanging richting echt programmeren zijn de dynamische tekstfragmenten.
De eerste regel definieert zoals gebruikelijk de afkorting die ingetypt moet worden. De volgende drie regels bestaan uit scriptcode oftewel opdrachten. De Engelstalige documentatie noemt dat ‘commands’. Dat is belangrijk om de taal goed te begrijpen, want AutoHotkey gebruikt twee soorten syntaxis naast elkaar. De met afstand meest gebruikte opdrachten gebruiken nog de oudere syntaxis (‘command syntax’ of traditionele syntaxis). Daarnaast is er een nieuwere syntaxis die bestaat uit functies (‘functions syntax’). Als je al ervaring hebt opgedaan met andere programmeer- of scripttalen, zal de functiesyntaxis waarschijnlijk bekender zijn voor je. Daarom gebruiken we waar dat mogelijk is hierna de modernere syntaxis.
Het grootste verschil tussen de twee soorten zie je bij de tekenvolgorde, variabelennamen en hoe waarden aan variabelen worden toegewezen. De operator voor het toewijzen is := en tekenreeksen moeten tussen aanhalingstekens worden gezet. De punt is de operator om tekenreeksen aan elkaar te plakken. Daarbij dient een eenvoudig isteken als toewijzingsoperator. Tekenreeksen krijgen geen aparte notatie, maar variabelennamen moeten dan wel tussen %-tekens worden gezet om de inhoud te benaderen.
Terug naar het datumtekstfragment: FormatTime is een opdracht en gebruikt dus de traditionele syntaxis. Opdrachten bestaan altijd uit de naam van een opdracht en een lijst parameters met een komma als scheidingsteken. Achter OutputVar schuilt een bijzonderheid die AutoHotkey gebruikt bij veel opdrachten: de opdrachten leveren standaard namelijk geen resultaat terug, in tegenstelling tot functies. Dat wijkt af van wat je misschien kent van andere programmeertalen en van hoe het ook bij AutoHotkey zelf werkt (bij de functiesyntaxis). Maar de opgemaakte datum wil je natuurlijk toch bewaren. Daarom geef je bij OutputVar de naam op van een variabele waarin het resultaat bewaard moet worden, bijvoorbeeld today. Bij YYMMDD… geef je de op te maken datum en tijd aan als tekenreeks in het getoonde formaat. Met de laatste parameter Format specificeer je hoe het resultaat moet worden opgemaakt.
De rechte haken rond de tweede en derde parameter geven aan dat die optioneel zijn. Laat je de datum weg, dan gebruikt FormatTime de huidige dag en de huidige tijd. De standaardnotatie voor Format is de tijd gevolgd door de datum, volgens de standaard landinstellingen van Windows. In het voorbeeld gebruiken we een eigen formaat, maar laten we het uitlezen van de tijd over aan het commando. Daarom volgen na het aanroepen met today twee komma’s met daartussen als het ware een lege tekenreeks.
SendInput stuurt toetsenbordsignalen naar het actieve venster dat overeenkomt met de tekenreeks in de eerste parameter. In het voorbeeld is dat de inhoud van de variabele today, die op de regel ervoor is toegewezen.
De opdracht return sluit de macro af en beëindigt de scriptuitvoering. In een script dat alleen de getoonde hotstring bevat, is dat overbodig. Maar doorgaans bevat een script meerdere hotstrings of hotkeys.
Hotkeys: Toetsencombinaties Activeren
Hotkeys werken vergelijkbaar met de hotstrings. Die vervangen echter geen getypte tekst, maar reageren op toetsen of toetsencombinaties. Als je bijvoorbeeld regelmatig Windows’ Rekenmachine gebruikt voor berekeningen op facturen, dan kan een hotkey van pas komen die automatisch de btw optelt bij het getoonde bedrag. Als makkelijk te herinneren hotkey zou je de toetsencombinatie Ctrl+Shift+B kunnen kiezen.
Bij een hotkey-definitie ontbreken de twee dubbele punten die je wel ziet bij hotstrings. Verder moet je de juiste tekens gebruiken voor de speciale toetsen. In het voorbeeld zijn dat ^ voor Ctrl en + voor Shift. Daarnaast kun je nog ! voor Alt of # voor de Windows-toets gebruiken. Zodra het script de toetsencombinatie herkent, stuurt het een reeks toetsaanslagen naar het actieve venster. In Rekenmachine zorgt dat er dan voor dat het getoonde getal met 1,21 wordt vermenigvuldigd.
In de eerste vorm verstuurt het script de toetsaanslagen altijd, dus ook als het venster van Rekenmachine helemaal niet actief is. Bij de getoonde en aanbevolen syntaxis bestaat de controle uit het sleutelwoord if, een voorwaarde tussen haakjes in de vorm van een expressie en een codeblok tussen accolades. De accolades zijn niet nodig als de code maar één regel beslaat, maar voor de overzichtelijkheid is het wel beter ze altijd te gebruiken.
De functie WinActive() controleert of een bepaald venster actief is. Hij verwacht als parameter de typische kenmerken van het venster. In het voorbeeld is dat eenvoudigweg de tekst die staat in de titelbalk van het betreffende venster. De functie levert de waarde 0 terug als het actieve venster niet aan de voorwaarde voldoet, in andere gevallen krijg je de bijbehorende ID. Die ID wordt in dit voorbeeld niet gebruikt, hier is alleen van belang dat if-query’s bij AutoHotkey de waarde 0 of lege tekenreeksen interpreteren als false, alle andere waarden als true.
In het voorbeeld is de if-controle de op één na beste manier om ervoor te zorgen dat de hotkey de uitvoer alleen naar het Rekenmachine-venster stuurt. Een directive zoals #IfWinActive gebruikt de commandosyntaxis, daarom moet de venstertitel hier niet tussen aanhalingstekens staan. De directive zorgt ervoor dat alle opvolgende hotkey-definities alleen worden verwerkt als bij het indrukken van een toetsencombinatie het opgegeven venster actief is. De if-controle verwerkt daarentegen eerst de toetsencombinatie en bepaalt daarna pas hoe daar op gereageerd moet worden. Dat leidt tot verschillende resultaten als bij een toetsencombinatie een ander venster actief is dan Rekenmachine.
Bij de if-controle accepteert AutoHotkey de toetsencombinatie: als die in het actieve programma een functie heeft, wordt die niet geactiveerd omdat AutoHotkey de toetsinvoer al heeft verwerkt en niet verder doorgeeft. Bij de directive controleert AutoHotkey eerst of het bij het huidige actieve venster wel op de toetsencombinatie moet reageren: als dat niet zo is, komt de toetsencombinatie gewoon aan bij het actieve programma.
Venstereigenschappen Inspecteren met Window Spy
Als criterium om te controleren of het actieve venster het juiste is, kan meer dan de venstertitel gebruikt worden. Je kunt bijvoorbeeld ook naar de naam van het exe-bestand of de zogeheten vensterklasse kijken. Om die te bepalen, gaat AutoHotkey vergezeld van het programma Window Spy. Met Window Spy kun je de eigenschappen inspecteren van vensters van andere toepassingen.
Het bovenste veld ‘Window Title, Class and Process’ toont de inhoud van de titelbalk, gevolgd door de vensterklasse, de procesnaam en de proces-ID. Elk daarvan kun je als voorwaarde gebruiken. of het actieve venster bij notepad.exe hoort.
De venstertitel en -klasse zijn niet alleen handig om het actieve venster te controleren, je kunt ze bijvoorbeeld ook gebruiken om na te gaan of een bepaald venster (al dan niet op de achtergrond) is geopend. Dit script wijst aan de toetsencombinatie Shift+Alt+V de volgende functie toe: controleer eerst of er een venster open is dat hoort bij Windows Verkenner. Als dat niet zo is, wordt er een geopend. Anders schakelt WinActivate over naar het gevonden venster.
Klembord Manipulatie
AutoHotkey-scripts kunnen ook iets doen met de inhoud van het Windows-klembord. Die wacht op de toetsencombinatie Ctrl+Shift+X en voert dan een wisseltruc uit. Daarvoor wordt eerst de inhoud van het klembord opgeslagen (clip := Clipboard). Daarna wordt de toetsencombinatie Ctrl+X naar het actieve venster gestuurd, wat in bijna alle Windows-programma’s de opdracht ‘Knippen’ aanroept. Tot slot wordt de oorspronkelijke inhoud van het klembord naar het actieve venster gestuurd.
Het resultaat van dit script is dat de inhoud van het klembord en de inhoud in de actieve toepassing van plaats verwisseld zijn. Wat in het programma was geselecteerd staat nu op het klembord en is vervolgens vervangen door wat vanuit een (ander) programma naar het klembord was geknipt of gekopieerd.
Scripts Distribueren als EXE-bestanden
Als je een handig AutoHotkey-script hebt geschreven, wil je het misschien ook verspreiden onder vrienden of collega’s. Maar het zou niet echt handig zijn als iedereen die je meesterwerk wil gebruiken eerst AutoHotkey moet installeren. Om dat te vermijden, bevat de installatie van AutoHotkey een soort compiler. Die zet het script om naar een exe-bestand, dat naar een andere Windows-pc gekopieerd kan worden en zonder geïnstalleerd te hoeven worden daarop kan worden uitgevoerd.
De scriptcode hoef je daarvoor niet aan te passen, die werkt ongewijzigd. Een meegeleverde compiler maakt exe-bestanden van AutoHotkey-scripts.
Textexpanders
Wist je dat je zo’n 4,5 jaar van je leven kwijt bent aan typen? De gemiddelde kenniswerker typt gedurende de dag namelijk zo’n tweeëneenhalf uur. Dat is achthonderdveertig uur per jaar dat je tikkend doorbrengt! Stel je eens voor wat je met die tijd zou kunnen doen. Door slimmer met jouw typ-tijd om te gaan, kun je hier een hoop besparen. Bij textexpanding gebruik je software om door middel van sneltoetsen razendsnel teksten te typen.
Alleen maar voordelen dus. Werken met een textexpander bespaart je tijd, zorgt ervoor dat je minder fouten maakt en maakt de communicatie stukken professioneler! Heeft iedereen baat bij het gebruiken van een textexpander? Jazeker! Ongeacht of je een back-office medewerker bent, een programmeur, advocaat of student: we typen allemaal wat af.
Verschillende Textexpanders
Er zijn verschillende opties. Een bekende textexpander is de gelijknamige ‘Textexpander’. Deze tool helpt zowel bedrijven als individuen tijd besparen door middel van sneltoetsen. Een goedkopere variant is de textexpander ‘aText’. In principe doet deze software hetzelfde als zijn grotere broer, maar blijft hij iets achter in functionaliteiten. Wanneer je Office op een Windows besturingssysteem gebruikt, kun je gebruik maken van de ‘ingebouwde’ textexpander die Office aanbiedt. Ben je een Android-gebruiker, dan heb je nog de optie om voor Texpand te kiezen.
| Textexpander | Platform | Kenmerken |
|---|---|---|
| Textexpander | Windows, macOS | Uitgebreide functionaliteiten |
| aText | macOS | Goedkopere variant |
| Office | Windows | Ingebouwde textexpander |
| Texpand | Android | Mobiele textexpander |
Hoe Werkt een Textexpander?
Ongeacht welke software of besturingssysteem je gebruikt, de basis is voor iedere textexpander hetzelfde. De sneltoets is de combinatie die het stuk tekst tevoorschijn laat komen. Bedenk een teken dat logisch is en dat je zonder moeite kunt onthouden. Doorgaans zet je hier een teken voor, zoals een dubbele slash of een puntkomma. Vervolgens geef je jouw snippet een naam van minstens 5 tekens. Dit is hoofdlettergevoelig. Geef jouw snippet een naam. Dit is hoofdlettergevoelig.
Bespaar jezelf een hoop tijd en fouten: werk voortaan met een textexpander. Je zal zien dat het je letterlijk uren op je typtijd bespaart, om nog maar te spreken over de nodige kopzorgen. Jij hoeft je namelijk niet langer zorgen te maken over het gebruik van het juiste format of wat jullie KvK-nummer ook alweer was.
Verder Onderzoeken
AutoHotkey biedt veel meer mogelijkheden dan we hier kunnen beschrijven. Als je dieper in de scripttaal wilt duiken, is het zeker handig om de bijgeleverde helptekst door te nemen. Behalve naslaginforma...
