AutoHotKey: een korte introductie
- 26/12/2018
Update April 2019: Als je een werkend AutoHotKey script van mij wil zien in de context van TM1: lees hier verder aub.
Inleiding
Jullie vragen je misschien af waarom het een tijdje geduurd heeft vooraleer er weer nieuwe pagina's op de site kwamen ? Enerzijds is er minder vrije tijd, anderzijds werd die vrije tijd anders ingevuld. De laatste tijd ben ik volop in de automatiseringstaal AutoHotKey gedoken.
Het is voor de regelmatige bezoeker van deze website geen verrassing dat ik automatiseren belangrijk vind. Dat doe ik immers al geruime tijd in zowel Excel (Office) als TM1. Daarover leest u alles in de overige domeinen van deze website. Echter, met AutoHotKey kunnen we nog veel verder gaan, hoewel de taal op zich niet lastig is. Uiteraard strekt het tot aanbeveling dat u noties van programmeren wel kan gebruiken, wil u zich de taal op relatief korte termijn eigen maken.
Courante toepassingen
Bij AutoHotKey gaan we sneltoetsen (hotkeys) definiëren, en daaraan koppelen we dan acties. Zo springt de combinatie Ctrl + Shift + F4 op mijn laptop naar het meest recente bestand in de Downloads map. Om dit voor mekaar te krijgen dienen we m.a.w. te programmeren en AutoHotKey de instructies te geven om in actie te treden bij de sneltoetscombinatie. O.a. een lus doorheen bestanden in de Downloads map moet geschreven worden. Op eender welk moment en in eender welk programma kan je die sneltoetscombinatie uitvoeren. Een nieuwe Windows Verkenner opent zich in de Downloads map met als selectie het meest recente bestand.
Andere sneltoetscombinaties kunnen afhankelijk zijn van de context. Bvb. als ik in een afspraakitem in Outlook ben, en ik druk F10, dan opent zich een lijstje met mogelijke keuzes: dit versnelt en uniformiseert de input. Echter, de keuzelijst bij het drukken van F10 mag enkel getoond worden als Outlook actief is, en dan nog enkel bij een afspraakitem.
Andere veelgebruikte mogelijkheden bestaan uit hotstrings. Zo kan je, eender waar en wanneer, de letters maw typen, wat dan ineens veranderd wordt in "met andere woorden". Een soort autocorrectie maar dan veel ruimer en veel handiger, veel veelzijdiger.
Gamefanaten, die wat kaas gegeten hebben van programmeren, gaan met AutoHotKey hun hart kunnen ophalen.
De Windows knop is ook een goede kandidaat om sneltoetscombinaties mee op te bouwen. Zo is bij mij Windows + c gelinkt aan de rekenmachine (Calculator). Maar daar komt de kracht en de veelzijdigheid van AutoHotKey sterk tot uiting: bij het drukken van die combinatie zijn er meerdere mogelijkheden. Als de rekenmachine nog niet gestart is, wordt ze gestart. Als de rekenmachine gestart werd maar geminimaliseerd is, dan zal de combinatie de rekenmachine weer op het scherm tonen. Was de rekenmachine reeds zichtbaar op het scherm, dan wordt het geminimaliseerd. Je ziet, veel mogelijkheden !
In het begin gaat het wat zoeken zijn en puzzelen, zo was het althans toch voor ondergetekende, maar dat is zo bij elke nieuwe taal. Daarom maakte ik het mogelijk om via Windows + g het volgende te doen:
- selecteer een woord of woorden
- druk de sneltoetscombinatie
- een inputbox wordt getoond met de geselecteerde woorden, die je kan overtypen of zelf invullen zonder voorafgaande selectie
- druk Enter
- resultaat: je favoriete browser opent zich en zoekt automatisch in Google op 'autohotkey' gevolgd door de gekozen woorden
Wie gebruikt er de knop met kwadraat (²) en derde macht (³ of Shift + ²) ? Of de Capslock toets ? Wat als we die eersten nu eens echt nuttig gaan maken ? Zo is kwadraat bij mij het selecteren en kopiëren van de hele regel:
- simuleer een Home toetsaanslag: ga naar het begin van de regel
- simuleer het ingedrukt houden van de Shift toets: begin met het selecteren van tekst
- simuleer een End toetsaanslag: ga naar het einde van de regel
- simuleer het weer loslaten van de Shift toets: stop met het selecteren van tekst
- simuleer een Ctrl + c toetsaanslag: kopieer de tekst
In de praktijk doe je deze stappen relatief snel, maar gewoon 1 keer drukken op de kwadraat toets lijkt mij makkelijker en sneller!
Wat als we in Excel zijn... ? Wel dan heb ik dat script voor de kwadraat toets anders opgevat. Daar gaan we de inhoud van een cel kopiëren:
- simuleer een F2 toetsaanslag: ga in de cel
- simuleer een Ctrl + a toetsaanslag: selecteer de inhoud van de cel
- simuleer een Ctrl + c toetsaanslag: kopieer de geselecteerde inhoud
- simuleer een Esc toetsaanslag: verlaat de cel
Wat is dan ³ ? Dat is bij mij het plakken over de hele regel / in de hele cel. Klopt, het omgekeerde van ², wat kopiëren was. Ctrl + ² kan weer een nieuw script opleveren, enz. Combineer naar hartelust Ctrl, Alt, Shift, Win, andere knoppen, cijfers, letters, karakters, muistoetsen, enz. - eventueel afhankelijk van het actieve programma.
Er staan veel tools ter beschikking van de programmeur in AutoHotKey. Denk maar aan array's, string manipulaties, werken met bestanden en mappen, COM objecten, ingebouwde Windows functionaliteiten, de muis of joystick aan de eigen wensen laten voldoen, timers, het sturen van bepaalde toetsaanslagen, het repetitief uitvoeren van commando's, Excel automatiseren, reguliere expressies, eigen interfaces maken, ...
Je kan jouw code, die je schrijft in een *.ahk bestand, uitvoeren op de computer. Je kan die ook compileren tot een *.exe bestand. Zo maak je vrij eenvoudig algemene scripts die je kan meenemen en beschikbaar stellen op andere computers, zonder al te veel moeite en inspanning. Je behaalt dezelfde efficiëntie tijdens je werk op andere computers vergeleken met je eigen computer. Maak je daarbij gebruik van kleine tekstbestandjes met instellingen (*.ini bestanden) dan hoef je aan de code in de gecompileerde *.exe bestanden over het algemeen niet te raken: je past gewoon de instellingen aan in het *.ini bestand en die instellingen worden uitgelezen door de code, die van nature generiek is.
Er is een actieve gebruikersgemeenschap voor AutoHotKey. Maak jezelf (gratis) lid en stel gerust vragen, de drempel is relatief laag. AutoHotKey forums. Gebruik de zoekfunctie op het forum of op Google en je vindt vaak kant-en-klare scripts.
Tot slot, presenteer ik nog een meer uitgebreid AutoHotKey script dat ik maakte. Het bespaart mij wel wat tijd.
- We beginnen in Gmail, mijn favoriete email programma voor privé-doeleinden, via Google Chrome
- Ik download 1 of meerdere bestanden die een klant mij toestuurt (voor analyse, programmeren, testing, …)
- Ik druk Ctrl + Shift + F5, waarbij automatisch:
- de notificatiebalk voor downloads onderaan het scherm in Chrome zich sluit
- een inputbox mij vraagt wie de klant is (ik kan met nummers kiezen uit de 5 meest voorkomende klanten), of een nieuwe klantennaam intypen
- een tweede inputbox mij vraagt hoeveel van de meest recente gedownloade bestanden ik wil verplaatsen
- op basis van vorige antwoorden, een map aangemaakt wordt voor de gekozen klant, met daarin een map voor de huidige maand (formaat: yyyy-mm), en daarin dan weer een map voor de huidige dag (formaat: yyyy-mm-dd)
- de meest recent gedownloade bestanden verplaatst worden naar die map voor de dag
- mochten er zip-bestanden gedownload en verplaatst worden, dan worden ze automatisch uitgepakt (zipfile verwijderd)
Doe je dit meerdere keren per dag dan ben je blij dat je kan automatiseren ! Het bespaart tijd, moeite en zorgt voor een eenduidige manier van werken. Zo schreef ik nog een aantal scripts die veel meer tijd besparen maar minder sprekend zijn voor de lezers.
AutoHotKey, the next best thing in town… Meer van dit in de komende maanden ! Onthoud dat een tijdswinst van maar 10 minuten per werkdag op jaarbasis het equivalent van een week verlof is ! Nu moet je enkel nog maar je baas overtuigen :-)