SoftwareWindows

AutoHotkey: Windows-Skripte für jedermann – Einführung

AutoHotkey kommt mit einer dermaßen einfachen Syntax aus, dass damit wirklich jeder eigene Skripte schreiben kann. Erste eigene Hotkeys, kleine Makros und Textbausteinsysteme bekommt Ihr garantiert in ein paar Minuten hin – auch wenn Ihr noch nie irgendetwas geskriptet habt.

AutoHotkey bietet genug Potenzial, um später auch große, mächtige Programme zu schreiben, hier geht es aber um blutige Anfänger: Wie arbeitet man mit AutoHotkey? Welche Hilfsmittel bietet es? Wie startet man ein Skript? Ihr bekommt hier die Grundlagen, um überhaupt mit dem Programm arbeiten zu können. Artikel zu konkreten Projekten, Syntaxhilfe und Tipps zu AutoHotkey haben wir hier.

Was ist AutoHotkey?

AutoHotkey ist eine Skriptsprache für Windows und wie der Name schon verrät, insbesondere für Automatisierung und Hotkeys ausgelegt. Das Tool ist Open Source, weit verbreitet und hervorragend dokumentiert. Der größte Pluspunkt ist aber vermutlich die Einfachheit – es gibt schlicht keine simplere Alternative. Mit AHK-Skripten könnt Ihr Hotkeys festlegen, Textbausteinsysteme basteln, Fenster manipulieren oder sogar komplette grafische Programme bauen.

Die Funktionsweise: Zum einen muss AutoHotkey selbst installiert sein, um AHK-Skripte zu interpretieren. AHK-Skripte sind schlicht und ergreifend Textdateien mit der Endung AHK. Per Doppelklick auf eine AHK-Datei startet das Skript und landet als Symbol unten in der Taskleiste. Aber am besten seht Ihr das an folgendem Simpel-Beispiel: Über Strg+Umschalt+1 soll ein Programm gestartet und die Abkürzung „u.U.“ automatisch durch „unter Umständen“ ersetzt werden.

autohotkey automatisierung einführung tutorial
Ein Skript im Tray.

Simpel-Skript schreiben

Installiert zunächst AutoHotkey – starten müsst Ihr es im Anschluss nicht. Erstellt nun eine Textdatei „meinskript.ahk“ und öffnet sie in einem Texteditor, also zum Beispiel Notepad oder Notepad++ – nicht in Word oder OpenOffice! Schreibt nun folgenden Code in die Datei:

; Kommentar: Meine Befehle
^+1::run, "C:\Windows\System32\notepad.exe"
::u.U.::unter Umständen

Mit ; beginnt zunächst eine Kommentarzeile, die nicht ausgeführt wird, sondern nur zur Information dient. Dann folgen die beiden grundlegenden Syntaxe. In Zeile 1: Das ^ steht für Strg, + für Umschalt und 1 für 1 – damit ist der Hotkey, der Auslöser definiert. Nach :: folgt dann die Aktion, hier also run zum Starten des Programms notepad.exe.

In Zeile 2: Da es sich im ersten Teil hier nicht um eine Tastenkombination, sondern einen normalen, von Euch getippten Text, eben u.U., handelt, der als Auslöser dienen soll, muss das Statement mit :: beginnen. Nach dem zweiten :: folgt wieder die Aktion, in diesem Fall schlichtes Ersetzen. Die Ersetzung wird ausgelöst, wenn Ihr nach „u.U.“ eine Taste wie Leer, Enter, Komma oder ähnliches drückt. Ihr könnt also einfach „u.U. LEERTASTE“ tippen und schon verwandelt sich die Abkürzung in die ausgeschriebene Version.

Allein mit diesen beiden simplen Anweisungen könnt Ihr Euch komplette Textbausteinsysteme oder umfangreiche Hotkey-Sammlungen aufbauen. Speichert die Datei zum Abschluss.

Skript ausführen, ändern, neu laden

Um das Skript zu starten, führt einfach einen Doppelklick darauf aus. Unten in der Taskleiste seht Ihr nun ein grünes Symbol mit einem weißen „H“ darauf. Ruft per Rechtsklick darauf das Kontextmenü auf: Hier dürft Ihr das Skript nun starten, pausieren, beenden oder neu laden.

In der Praxis heißt das: Ihr ändert Euer Skript, speichert es und wählt dann aus dem Kontextmenü den Punkt Reload This Script, um die Änderungen zu aktivieren.

AutoHotkey-Hilfsmittel

Wie gesagt, AutoHotkey kann noch deutlich mehr. Um zu erfahren, wie Ihr eine gewünschte Funktion umsetzt, zieht Ihr am besten die sehr gute Referenz von AutoHotkey hinzu. Die ist zwar auf Englisch gehalten, aber das ist in der Programmierwelt eben so. Sie sollte aber einfach genug sein, um die Befehle und die Syntax zu verstehen – Beispiele gibt es jedenfalls auch immer. Hier ein paar der wichtigsten Links:

AutoHotkey bringt aber ein paar tolle Hilfsmittel mit.

Fensternamen und -informationen: Stellt Euch vor, Ihr wollt, dass ein Hotkey nur und ausschließlich bei einem bestimmten Programm aktiv ist – dann könnt Ihr das mit der Abfrage IfWinActive erledigen, ein Beispiel haben wir hier. IfWinActive prüft, ob das Fenster im Vordergrund einen bestimmten Namen hat. Dafür müsst Ihr aber erstmal wissen, wie denn das Fenster heißt! Ebenso, wenn Ihr Fenster automatisch skalieren und anordnen wollt. Dabei hilft der Window Spy: Öffnet ihn aus dem Kontextmenü eines beliebigen AHK-Skripts oder über die Datei AU3_Spy.exe aus dem AutoHotkey-Ordner. Der Window Spy zeigt Euch nun allerhand Informationen über das ausgewählte Fenster, unter anderem den Namen des Fensters, der hier in der Variablen ahk_class landet – hier im Bild etwa „calc.exe“.

autohotkey automatisierung einführung tutorial
Unerlässlich: Der Window Spy zeigt Fensterinformationen.

Tasten-Historie: Mit einem Doppelklick auf das Tray-Icon eines Skripts öffnet Ihr das Hauptfenster. Über View/Key history and script info könnt Ihr hier die Historie der geklickten Tasten sehen. Wenn Ihr nun zum Beispiel an der Maus die Tasten 4 und 5 drückt, also in der Regel die beiden Daumentasten mit denen Ihr im Browser vor und zurück springt, und dann die Ansicht mit F5 aktualisiert, seht Ihr, dass diese beiden Buttons AutoHotkey-intern XButton1 und XButton2 heißen.

autohotkey automatisierung einführung tutorial
Die Key-History hilft beim Verstehen.

EXE statt Skript: Wenn Ihr AHK-Skripte auf einem anderen Computer ausführen wollt, muss dort natürlich AutoHotkey installiert sein. Oder auch nicht: Im AutoHotkey-Ordner findet Ihr einen Ordner „Compiler“ und darin die Datei Ahk2Exe.exe. Mit dem Tool könnt Ihr ein Skript kompilieren, also in eine EXE-Datei konvertieren, die auch ohne AutoHotkey-Installation funktioniert. Wählt einfach das Skript, bestimmt die Zieldatei (meinskript.exe) und wenn Ihr wollt auch noch ein eigens Programm-Icon. Die erstellte EXE könnt Ihr dann zum Beispiel von einem USB-Stick aus ausführen.

autohotkey automatisierung einführung tutorial
AHK-Skripte können auch zu EXEn kompiliert werden.

Mit diesen Grundlagen solltet Ihr jetzt in der Lage sein, mit AutoHotkey zu arbeiten und sogar erste einfache Skripte zu erstellen – wobei „einfach“ hier durchaus ein komplexes Textbausteinsystem sein kann, das Eure Lieblingstippfehler automatisch korrigiert, Abkürzungen automatisch ausschreibt oder Euch auch ganze Floskeln oder Standardabsätze abnimmt:

::mfg::Mit freundlichen Grüßen {enter}Mustrum Ridcully {enter}{enter}--{enter}Präsident der Unischtbaren Universität{enter}Ankh Morpork{enter}ridicully@uu.gov

Ergibt:

Mit freundlichen Grüßen 
Mustrum Ridcully 

--
Präsident der Unischtbaren Universität
Ankh Morpork
ridicully@uu.gov 

Wenn Ihr also etwa in einer Mail am Ende „mfg+ENTER“ eingeben würdet, würde die mfg-Floskel samt Signatur (alles unterhlab der beiden Bindestriche) erscheinen. Einfacher, oder?

Alles weitere ergibt sich dann aus Eurer Kreativität und Euren Bedürfnissen: Die Syntax bekommt Ihr aus der Referenz, konkrete Antworten auf Probleme findet Ihr bei stackoverflow https://stackoverflow.com/search?q=autohotkey und die eine oder andere Anregung haben wir auch noch.

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

5 Kommentare

  1. Hai, Mirco,

    Mist, das war nicht die letzte Fassung des Skripts… – désolé!

    Hier die aktuelle Fassung (die aber leider genausowenig funktioniert):

    ——————– Schnipp! ——————–
    #NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
    ; #Warn ; Enable warnings to assist with detecting common errors.
    SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
    SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.

    ; GLOBAL: Ruft das Dialogfeld „Schriftartauswahl“ auf:
    ; Abfrage, ob Pegasus das aktive Fenster ist:
    #ifWinActive, ahk_class Pegasus Mail
    ^ö::
    !n
    Send, r
    return
    ——————– Schnapp! ——————–

    Liebe Grüße
    Struppi

    1. Hmmm, mal so in aller Kürze: Ich vermute WinMenuSelectItem wird Dir eher helfen. Damit kannst Du Menüpunkte direkt ansprechen – sofern es sich um Standard-Windows-Fenster-Menüs handelt.

      ^ö::
      WinMenuSelectItem, ahk_exe notepad++.exe, , Datei, Neu
      return
      

      Das würde zum Beispiel bei laufendem Notepad++ Das Datei-Menü aufrufen und dort den Punkt Neu. Wenn das mit Namen nicht hinhaut, kann man die Menüs, Untermenüs und Menüpunkte wohl auch einfach durchnummerieren.

      Für die Fälle, in denen das nicht funktioniert, gibt es in der Doku eine Anleitung unter Verwendung von SendMessage.

      Ich bin mir nicht sicher, ob sich das auch über die Simulation der einzelnen Tastenklicks machen lässt, wie Du es versucht hast. Jedenfalls nicht ohne eher viel Aufwand. Wenn ich das richtig verstehe, wird das von AutoHotkey absichtlich unterdrückt, damit ALT als Modifier genutzt werden kann, eben gerade ohne ein Menu zu öffnen. Dazu wird dann über MenuMaskKey noch ein zusätzliches (quasi virtuelles) STRG gesendet … – irgendwie so. Hintergrund, viel Diskussion und Verwirrung scheint es hier im Forum zu geben.

  2. Hai, Mirco,

    uff, das scheint ja ein ziemlich mächtiges Werkzeug zu sein! ;-)
    Aber leider auch nicht so ganz trivial…

    Ich würde mir gern ein Skript schreiben, das mit im E-Post-Klienten Pegasus das Dialogfenster „Schriftartauswahl“ aufruft, das sonst nur über die Maus (→ bin bekennender Maushasser… ;-) ) oder eine umständliche Tastenkette aufrufbar wäre:
    Alt, „n“ (für das Menü „Nachricht“), „r“ /für den Befehl „Schriftart“)
    Das sieht harmlos aus…
    Ich habe also nach kurzem Einlesen in das Programm mal folgendes Skript erstellt, wundere ich aber, warum es nicht funktioniert:

    ——————– Schnipp! ——————–
    #NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
    ; #Warn ; Enable warnings to assist with detecting common errors.
    SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
    SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.

    ; GLOBAL: Ruft das Dialogfeld „Schriftartauswahl“ auf:
    ; Abfrage, ob Pegasus das aktive Fenster ist:
    #ifWinActive, ahk_class Pegasus Mail
    ; Beschränkung auf ein Fenster, dessen Titel mit „Nachricht“ beginnt:
    SetTitleMatchMode 2
    ^ö::
    !n
    Send, r
    return
    ——————– Schnapp! ——————–

    Wahrscheinlich ein blöder Anfängerfehler… Aber vielleicht hat ja jemand einen Tip für mich, warum es nicht funktioniert.

Schreibe einen Kommentar zu Mirco Lang Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Schaltfläche "Zurück zum Anfang"
Schließen

Ooopsi!

Bitte deaktiviere Deinen Adblocker.