AutoHotkey ist eine kostenlose Skript-Sprache für das Automatisieren von Windows. Mit der Sprache können Sie kleine Skripte schreiben, mit denen verschiedene Aufgaben in Windows automatisiert werden können. Das Tool ist auch Bestandteil der bekannten Open Source-DVD.
Das Tool lässt sich aber auch direkt auf der Seite des Herstellers herunterladen. Auf der Seite sind darüber hinaus auch Dokumentationen und Beispielskripte zu finden. Wir zeigen die Links weiter unten im Beitrag.
Neben dem Schreiben von eigenen Skripten kann AutoHotkey auch eigene Makros aufzeichnen und umsetzen. Mit den Skripten können auch andere Aufgaben umgesetzt werden, zum Beispiel das Definieren von neuen Tastenkombinationen in Windows. AutoHotkey ist bei der Zuweisung von Tastenkombinationen und der Automatisierung von Windows sehr flexibel. Damit Sie sich aber umfassend mit dem Tool auseinandersetzen zu können, ist etwas Zeit und Übung notwendig.
Nach der Einarbeitung beginnt die Automatisierung
Da es sich bei dem Tool um eine Skriptsprache handelt, ist natürlich etwas Einarbeitung notwendig. Danach lassen sich aber durchaus mächtige Skripte schreiben. Auf If- und Then-Abfragen sind mit AutoHotkey kein Problem.
Die Skripte können mit allen Editoren geschrieben werden, auch mit Notepad. Die Skripte erhalten die Endung *.ahk. Wenn AutoHotkey auf einem Rechner installiert ist, führt das Tool AHK-Dateien aus, wenn diese gestartet werden.
Skripte zu *.exe-Datei kompilieren
Es gibt aber auch die Möglichkeit die Skripte zu kompilieren. Dazu gehört zum Lieferumfang von AutoHotkey ein Compiler mit der Bezeichnung Ahk2Exe. Für die Einarbeitung in AutoHotkey bietet sich die Seite „AutoHotkey Tutorial: Erste Schritte mit AutoHotkey“ an. Auf der Seite der Entwickler gibt es auch eine umfangreiche Dokumentation für AutoHotkey, die bei der Einarbeitung hilft.
Auf GitHub gibt es darüber hinaus auf der Seite der Entwickler zahlreiche Beispielskripte, die zum Einsatz kommen können. Sie können die Skripte selbst verwenden, oder anpassen. In jedem Fall sind die Skripte eine sehr gute Quelle für die Einarbeitung in AutoHotKey.
Ein Beispielskript, das es ermöglicht Fenster in Windows einfacher zu verschieben, nicht nur über die Titelleiste, sieht zum Beispiel folgendermaßen aus:
; Easy Window Dragging (requires XP/2k/NT) ; https://www.autohotkey.com ; Normally, a window can only be dragged by clicking on its title bar. ; This script extends that so that any point inside a window can be dragged. ; To activate this mode, hold down CapsLock or the middle mouse button while ; clicking, then drag the window to a new position. ; Note: You can optionally release CapsLock or the middle mouse button after ; pressing down the mouse button rather than holding it down the whole time. ; This script requires v1.0.25+. ~MButton & LButton:: CapsLock & LButton:: CoordMode, Mouse ; Switch to screen/absolute coordinates. MouseGetPos, EWD_MouseStartX, EWD_MouseStartY, EWD_MouseWin WinGetPos, EWD_OriginalPosX, EWD_OriginalPosY,,, ahk_id %EWD_MouseWin% WinGet, EWD_WinState, MinMax, ahk_id %EWD_MouseWin% if EWD_WinState = 0 ; Only if the window isn't maximized SetTimer, EWD_WatchMouse, 10 ; Track the mouse as the user drags it. return EWD_WatchMouse: GetKeyState, EWD_LButtonState, LButton, P if EWD_LButtonState = U ; Button has been released, so drag is complete. { SetTimer, EWD_WatchMouse, Off return } GetKeyState, EWD_EscapeState, Escape, P if EWD_EscapeState = D ; Escape has been pressed, so drag is cancelled. { SetTimer, EWD_WatchMouse, Off WinMove, ahk_id %EWD_MouseWin%,, %EWD_OriginalPosX%, %EWD_OriginalPosY% return } ; Otherwise, reposition the window to match the change in mouse coordinates ; caused by the user having dragged the mouse: CoordMode, Mouse MouseGetPos, EWD_MouseX, EWD_MouseY WinGetPos, EWD_WinX, EWD_WinY,,, ahk_id %EWD_MouseWin% SetWinDelay, -1 ; Makes the below move faster/smoother. WinMove, ahk_id %EWD_MouseWin%,, EWD_WinX + EWD_MouseX - EWD_MouseStartX, EWD_WinY + EWD_MouseY - EWD_MouseStartY EWD_MouseStartX := EWD_MouseX ; Update for the next timer-call to this subroutine. EWD_MouseStartY := EWD_MouseY return