10Aug

Tijd besparen door saaie taken te automatiseren met AutoHotkey

Hebt u ooit dezelfde hersenloze taak steeds opnieuw moeten uitvoeren op uw pc? In plaats van urenlang op knoppen te klikken en op toetsen te drukken, is dit het perfecte moment om uw AutoHotkey-vaardigheden te gebruiken om uw pc het werk voor u te laten doen.

Opmerking: Dit specifieke exemplaar is een echt exemplaar dat ik eerder vandaag gebruikte om een ​​kleine hoeveelheid tijd te besparen, maar dit zijn technieken die ik in de loop der jaren vele malen heb gebruikt om mezelf letterlijk dagenlang tijd te besparen.

Het scenario

Ik probeerde een aantal onjuiste uitzendberichten door te nemen in ons e-mailnieuwserveraccount, toen ik me realiseerde dat hun interface me vereiste om handmatig op de knop Verwijderen te klikken en het vervolgens op elk bericht te bevestigen - wij 'opnieuw praten over 300 onjuiste berichten die moesten worden verwijderd. Tot overmaat van ramp is de interface uiterst traag, wat betekent dat ik een goede 30-40 minuten zou hebben doorgebracht door gewoon te klikken en mijn carpale tunnel nog erger te maken.

In plaats van dat te doen, heb ik een nieuw AutoHotkey-script gemaakt en heb ik snel een script geschreven om het werk voor mij te doen.

De eerste stap was om precies vast te stellen welke klikken en toetsen ik moest automatiseren - uiteraard is de eerste stap om op de X-knop te klikken, die dit Ajax bevestigingsdialoogvenster opent:

Gelukkig wordt de knop Verwijderen automatisch gemarkeerd, zodat je eenvoudig kuntdruk op de spatietoets om te bevestigen. Zodra het record is verwijderd, schuift alles op alsof de rij er nooit was. Als we dit weten, gaan we verder en maken we een script dat het klikken op de X-knop automatiseert, 3 seconden wacht op het bevestigingsvenster, op de spatiebalk drukt en nog eens 3 seconden wacht totdat de rij verdwijnt.

Het script maken

Het eerste wat we willen doen is een lus maken die dezelfde acties een aantal keer herhaalt - in dit geval schatten we dat we dit 300 keer moeten herhalen, dus weGebruik de syntaxis van Loop als volgt:

Loop 300
{

}

Nu moeten we de klikactie automatiseren, wat gemakkelijk is in AutoHotkey: u typt gewoon klik op .U kunt desgewenst een geavanceerdere kliksyntaxis gebruiken, waarbij u exact kiest waar op het scherm moet worden geklikt of wanneer u op de knop klikt. Voor onze doeleinden gebruiken we de standaard, die ons hierbij laat:

Loop 300
{
click
}

Nu zal ons script 300 keer achter elkaar klikken, maar helaas hebben we die bevestigingsdialoog omafhandelen, dus nu gebruiken we de Verzendfunctie om de Spatiebalk-toetsaanslag naar het actieve venster te sturen.

Loop 300
{
klik
Send,{ Space}
}

Als u naar de documentatie kijkt, ziet u de syntaxis voor speciale toetsen; normale toetsaanslagen kunnen normaal worden ingevoerd, bijvoorbeeld als u wilt invoerentest en eindig het met een spatie, dan zou je dit gebruiken:

Verzenden, test{ Space}

Dus nu hebben we een script dat op de knop klikt en dan de spatiebalk raakt, wat in orde zou zijn, behalve de interfaceis traag, dus we moeten een kleine pauze invoegen tussen elke uitvoering van de klik- en verzendfuncties. Om dit te bereiken, gebruiken we de slaapfunctie, die maar één argument nodig heeft: de vertraging in milliseconden.

Loop 300
{
sleep 3000
klik
sleep 3000
Send,{ Space}
}

Nu hebben we een script dat de items met succes verwijdert, wachtend 3 seconden voordat het start, zodat je de muiscursor kunt verplaatsenover de eerste X, klik op de knop, wacht 3 seconden, raak de spatiebalk aan en wacht 3 seconden voordat deze door de volgende set gaat. Je zou dit eenvoudige script nu kunnen gebruiken als je dat zou willen, maar wat als je het script wilt stoppen?

Wat we zullen doen is de GetKeyState-functie gebruiken om te controleren of je een bepaalde sleutel hebt geraakt-voor testen, we zullen de F8-sleutel gebruiken en het volgende toevoegen in het midden van de lus. Hiermee wordt gedetecteerd of de F8-toets is ingedrukt en gebruikt u vervolgens de pauze om de lus te verlaten.

GetKeyState, state, F8
if state = D
break

The Final Script

Hier is het laatste script allemaal bij elkaar gezet, wat waarschijnlijk niet teveel zal helpen omdat het specifiek is voor mijn scenario, maar u kunt het gebruiken om uweigen scripts door simpelweg de klikken en toetsaanslagen te wijzigen.

Loop 300
{
GetKeyState, state, F8
if state = D
pauze
slaap 3000
klik
sleep 3000
Send,{ Space}
}
Terug

Om te illustreren hoe dit in de praktijk werkt, hier is een korte video dielaat het in actie zien:

In dit specifieke scenario kostte het me ongeveer 3 minuten om een ​​werkend script-tijd samen te stellen: 27 minuten. Net genoeg tijd voor mij om de video op te nemen en dit artikel te schrijven!