Automatiseer programma's met AutoHotkey

Door: Toon van Daele | 08 mei 2018 10:40

Apps & Software

Inhoudsopgave

  1. Inleiding
  2. Pagina 2

05 Speciale toetsen

Je weet uit stap 3 nu hoe je een tekstmacro, oftewel hotstring, creëert. We gaan nu aan de slag met het koppelen van een toetscombinatie (bijvoorbeeld Ctrl, Alt of Shift in combinatie met een andere toets) aan een handeling. De toetsnamen en veel meer over sneltoetsen kom je hier te weten. Onder Modifier lezen we daar bijvoorbeeld dat we de Alt-toets aanroepen met !, Ctrl met ^, Shift met +.

Stel, je wilt met de toetscombinatie Ctrl+Alt+C de webpagina van Computer!Totaal openen. Dat krijg je met één coderegel voor elkaar, waarbij je het pad moet vervangen door dat van jouw favoriete browser:

^!C::run "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" https://computertotaal.nl

Het feit dat je hier sneltoetsprefixen als ^(Ctrl) en ! (Alt) gebruikt, kan problemen opleveren bij code als ::ctot::Computer!Totaal, gezien het uitroepteken dan niet als leesteken wordt geïnterpreteerd, maar staat voor de Alt-toets. De oplossing is gelukkig eenvoudig: ::ctot::Computer{!}Totaal.

Wil je toetsaanslagen doorsturen na het indrukken van speciale sneltoetsen, dan moet je dat met het Send-commando regelen: #R:: Send, Computer{!}Totaal zorgt ervoor dat de tekst Computer!Totaal verschijnt zodra je Windows-toets+R indrukt. Het is uiteraard ook mogelijk meerdere hotstrings tegelijk te definiëren, iets als volgt:

::vn::Toon
#A::Send, van Daele
#E::Send, tvd@computertotaal.nl
Return

Een grafische ontwerpmodule voor pop-upvensters, beschikbaar in SciTE.

Kant-en-klaar

Wie AutoHotkey goed beheerst, kan er fraaie programma’s mee maken. Wat dacht je van een tool waarmee je on the fly je eigen hotstrings mee beheert? Het volstaat het script in het tekstkader in je editor te plakken en het als ahk-script of gecompileerd uit te voeren. Wanneer je vervolgens Ctrl+Alt+A (of AltGr+A) indrukt – in AutoHotkey wordt dat ^!A:: (zie regel 58 in het script) – verschijnt een venster waarin je je eigen hotstrings naar wens aanmaakt en weer verwijdert.

Ook een tool als Wallpaper Randomizer die je een andere bureaubladachtergrond toont (bij het opstarten van Windows, na verloop van tijd of bij het indrukken van een sneltoets), is geheel in AutoHotkey geschreven. Je kunt het script, weliswaar enkele honderden regels lang, ook downloaden en aanpassen.

Autotext: je eigen hotstringmanager, kant-en-klaar in AutoHotkey-script.

06 Nog meer toetsen

AutoHotkey kan ook nog op andere manieren met het toetsenbord overweg. Zo is het mogelijk bepaalde toetsen uit te schakelen of om te wisselen, wat handig kan zijn als bijvoorbeeld bepaalde toetsen bij het gamen storend zijn of als je de toetsenbordbesturing liever anders ingevuld ziet.

Met $CapsLock::Return schakel je bijvoorbeeld de werking van de CapsLock-toets uit, iets gelijkaardigs is ook mogelijk voor ScrollLock en NumLock. Of je bepaalt zelf de status van zulke toetsen met een commando als SetNumLockState, on. Uiteraard kun je ook vaste toetscombinaties in Windows uitschakelen, zoals met #e::Return (roept normaliter de Verkenner op) of je hangt er een andere functie aan, zoals met $LWin:: Send ^{Tab} (zorgt ervoor dat je met de LinkerWindows-toets naar de volgende tab gaat in je browser, wat je normaliter met Ctrl+Tab doet).

Op vergelijkbare manier kun je aan toetsen ook allerlei acties koppelen, zoals het volume verhogen of verlagen in stapjes van 6% via Windows-toets in combinatie met de – of +-knop op je numerieke toetsenbord:

$#NumpadSub:: Send {Volume_Down 3} ; geluid 6% verlagen
$#NumpadAdd:: Send {Volume_Up 3} ; geluid 6% verhogen

Merk trouwens op dat je na een puntkomma (op de meeste plaatsen) ook commentaar aan je script kunt toevoegen: handig als je het script naderhand wil bewerken of wanneer je het wilt delen.

Stel zelf je ‘multimedia-toetsenbord’ samen met behulp van AutoHotkey.

07 Klembord

AutoHotkey kan ook gebruikmaken van het klembord van Windows, wat opnieuw handige mogelijkheden biedt. Zo is het mogelijk een woord naar het klembord te sturen waarna je met een sneltoets de inhoud van het klembord doorspeelt aan Google:

^g::
Run https://www.google.com/search?q=%clipboard%
Return

Een nieuw element in deze code is de variabele %clipboard%, die de actuele inhoud van het klembord gebruikt als parameter (zoekstring) van de opgegeven url. Je zou er ook iets als ^a:: Run https://www.google.com/search?tbm=isch&q=%clipboard% aan kunnen toevoegen als je naar afbeeldingen zoekt. Of je gebruikt de query-url van een andere service, zoals Wikipedia: Run http://nl.wikipedia.org/wiki/Special:Search?search=%clipboard%.

Er zijn natuurlijk ook allerlei uitbreidingen en varianten mogelijk voor verdere interactie met het klembord. {F12}:: Send, ^C bijvoorbeeld zorgt ervoor dat het indrukken van F12 de toetscombinatie Ctrl+C genereert, wat maakt dat een geselecteerd tekstdeel naar het klembord wordt gestuurd. Het is ook mogelijk een stukje tekst aan de reeds bestaande inhoud van het klembord toe te voegen, in plaats van dat te vervangen:

Insert::
oud = %clipboard%
Send, ^c
clipboard = %oud%`r`n%clipboard%
return

Eerst plaatsen we de actuele inhoud van het klembord in de variabele oud, waarna we bij het indrukken van de Insert-toets de variabele clipboard vervangen door de variabele oud samen met de actuele inhoud van het klembord. Om te vermijden dat de inhoud letterlijk aan elkaar wordt geplakt, voegen we er de code `r`n aan toe: die zorgt ervoor dat het daaropvolgende deel op een nieuwe regel terechtkomt.

Een eenvoudig script zorgt voor interactie met het Windows-klembord.

08 Muis & venster

AutoHotkey kan ook uitstekend overweg met vensters en muisklikken. Een eenvoudig voorbeeld geeft je al een idee waar het naartoe gaat. Stel, je gebruikt een bepaalde applicatie waar je frequent dezelfde menu-optie nodig hebt. Die kun je natuurlijk telkens zelf aanklikken, maar het is ook mogelijk dat door een sneltoets te laten doen:

^m::
Click Left 143,45
Click Left 183,94
Return

Eerst zal de muiscursor naar de schermcoördinaten 143,45 bewegen en daar wordt een druk op de linkermuisknop gegenereerd zodat het uitklapmenu wordt geopend, vervolgens gebeurt hetzelfde op coördinaten 183,94 om het menu-item te selecteren. Voor wie zich afvraagt hoe hij die coördinaten uitvist: in SciTE druk je op het knopje Active Window Info. Zodra je nu de muiscursor boven het programmavenster beweegt, lees je alle nodige informatie af, waaronder de coördinaten en de exacte vensternaam.

09 Programmeerlussen

Elke scripting-taal die z’n naam waardig draagt, ondersteunt ook specifieke programmeerconstructies als lussen en conditionele uitvoer. Dus dat vinden we ook in AutoHotkey. We hebben niet de ruimte om er diep op in te gaan, maar een paar eenvoudige voorbeelden kunnen je al een eind op weg zetten.

Stel dat je met een sneltoets het muiswiel bestuurt en je wilt bij elke druk op de toets het muiswiel vijf keer naar beneden laten draaien. Dat kan met een simpel loop-commando:

^m::
Loop, 5
Click WheelDown ; gebruik WheelUp voor de andere richting
Return

Ook andere lusconstructies zijn mogelijk, zoals een while-loop (zolang … geldt, voer … uit).

Het volgende voorbeeld is al iets complexer. Hierbij worden in een tooltip de startcoördinaten evenals de breedte en hoogte van de rechthoek binnen het sleepgebied getoond, zolang sleepbeweging aanhoudt:

CoordMode, Mouse, Screen
~LButton::
MouseGetPos, begin_x, begin_y
while GetKeyState("LButton")
{
MouseGetPos, x, y
ToolTip, % begin_x ", " begin_y "`n " Abs(begin_x-x) "
x " Abs(begin_y-y)
Sleep, 10
}
ToolTip
Return

Test het script uit om het resultaat te zien. Voor uitgebreide achtergrondinformatie over CoordMode en ToolTip kun je hier terecht, waar je ook van de zoekbalk gebruik kunt maken. We raden je overigens aan vooral in het begin veelvuldig met deze tutorial en zoekfunctie te werken: je vindt er uitstekende feedback en praktische voorbeelden.

Veel succes met AutoHotkey. We vernemen het graag als je zelf een handig script hebt ontwikkeld!

Lussen zijn handige constructies om repetitieve handelingen uit te laten voeren.

Grafische interface

Wie kant-en-klare AutoHotkey-scripts downloadt en uitprobeert, zal merken dat sommige programmeurs zich ook van een fraaie grafische interface bedienen. Dat is weliswaar lastiger te programmeren, maar je vindt gelukkig wel een uitstekende hulp in SmartGUI Creator, die je via een knopje in SciTE opstart. De werking is eigenlijk eenvoudig. Je start de tool op en met behulp van bouwblokken zet je de gewenste interface op. Via File / Test Script ga je na of de interface naar wens is, waarna je die via File / Save Script and Exit in een ahk-script giet, voor verdere invulling en manipulatie.

0 Reactie(s) op: Automatiseer programma's met AutoHotkey

  • Om te reageren moet je ingelogd zijn. Nog geen account? Registreer je dan en praat mee!
  • Er zijn nog geen reacties op dit artikel.

Wanneer je een reactie plaatst ga je akoord
met onze voorwaarden voor reacties.