AutoHotkey macht nichts von selbst; es braucht ein Skript, das ihm sagt, was es tun soll. Ein Skript ist lediglich eine reine Textdatei mit der Dateiendung .ahk
, die Anweisungen für das Programm enthält - so ähnlich wie eine Konfigurationsdatei, nur viel mächtiger. Das Mindeste, was ein Skript tun kann, ist eine einzelne Aktion auszuführen und sich dann zu beenden. Die meisten Skripte definieren jedoch eine Reihe von Hotkeys, von denen jeder eine oder mehrere Aktionen ausführt, sobald er gedrückt wird.
#z::Run https://www.autohotkey.com ; WIN+Z ^!n:: ; STRG+ALT+N if WinExist("Unbenannt - Editor") WinActivate else Run Notepad return
Tipp: Wenn Ihr Browser dies unterstützt, können Sie jeden Codeblock (wie den obigen) als Skriptdatei herunterladen, indem Sie den Mauszeiger über den Codeblock bewegen und oben rechts auf die Schaltfläche ↓ klicken.
Es gibt mehrere Möglichkeiten, eine Skriptdatei zu erstellen:
.ahk
. Auf manchen Systemen müssen Sie den Namen in Anführungszeichen setzen, um sicherzustellen, dass der Editor keine weitere Dateiendung (wie z.B. .txt) hinzufügt.
Achten Sie darauf, die Datei unter UTF-8 mit BOM zu speichern, wenn ASCII-fremde Zeichen enthalten sind. Weitere Informationen finden Sie in der FAQ.
.ahk
nicht zu löschen, falls sie sichtbar ist).Weitere Informationen zum Schreiben eines Skripts finden Sie unter Skriptsprache.
Klicken Sie mit der rechten Maustaste auf die Skriptdatei und wählen Sie Edit Script aus, um ein Skript zum Editieren zu öffnen. Wenn das Skript bereits ausgeführt wird, können Sie den Edit-Befehl verwenden oder auf das Tray-Symbol des Skripts rechtsklicken und Edit This Script auswählen. Standardmäßig öffnet dies Notepad, allerdings können Sie das durch Ändern eines Registry-Eintrags ändern, wie hier gezeigt. Natürlich können Sie jederzeit Ihren Texteditor starten und dann das Skript wie jede andere Textdatei öffnen.
Wenn Sie ein Skript editiert haben, müssen Sie es ausführen oder neu laden, damit die Änderungen wirksam werden. Ein laufendes Skript kann in der Regel über das Tray-Menü neu geladen werden.
Sofern AutoHotkey installiert ist, gibt es mehrere Möglichkeiten, ein Skript auszuführen:
Die meisten Skripte zeigen ihren Effekt nur während der Ausführung. Verwenden Sie das Tray-Menü oder den ExitApp-Befehl, um ein Skript zu beenden. Skripte werden auch zur Beendigung gezwungen, wenn Windows heruntergefahren wird. Um ein Skript automatisch nach der Anmeldung des Benutzers zu starten, platzieren Sie einfach eine Verknüpfung der Skriptdatei im Autostart-Ordner.
Skripte können auch kompiliert werden, d.h. ein Skript kann mit einer AutoHotkey-Binärdatei kombiniert werden, um eine eigenständige EXE-Datei zu erstellen.
Standardmäßig fügt jedes Skript ein eigenes Symbol in den Infobereich der Taskleiste (auch Tray genannt) ein.
Das Tray-Symbol sieht üblicherweise wie folgt aus:
Das Standard-Tray-Symbol. | |
Das Skript ist pausiert. | |
Das Skript ist suspendiert. | |
Das Skript ist pausiert und suspendiert. |
Rechtsklicken Sie auf das Tray-Symbol, um das Tray-Menü anzuzeigen, das standardmäßig die folgenden Optionen enthält:
Standardmäßig bewirkt ein Doppelklick auf das Tray-Symbol, dass das Hauptfenster des Skripts angezeigt wird.
Mit dem Menu-Befehl kann das Tray-Symbol und -Menü individuell angepasst werden.
Mit der #NoTrayIcon-Direktive kann das Tray-Symbol versteckt werden.
Das Hauptfenster des Skripts ist normalerweise versteckt, kann aber über das Tray-Symbol oder einen der unten aufgeführten Befehle sichtbar gemacht werden, um Zugriff auf Informationen zu erhalten, die für das Debuggen des Skripts nützlich sind. Die Menüpunkte im View-Menü beeinflussen, was im Hauptfenster angezeigt wird:
Bekanntes Problem: Die Tastaturkurzbefehle der Menüpunkte funktionieren nicht, wenn das Skript ein Mitteilungsfenster oder ein anderes Dialogfenster anzeigt.
Die interne Variable A_ScriptHwnd enthält die HWND-Nummer (eindeutige ID) des Hauptfensters.
Wenn dieses Fenster mit WinClose geschlossen wird (auch von einem anderen Skript aus), wird das Skript beendet, aber die meisten anderen Methoden verstecken nur das Fenster und lassen das Skript weiterlaufen.
Wenn das Hauptfenster minimiert wird, wird es automatisch versteckt. Dies ist notwendig, um zu verhindern, dass untergeordnete Fenster (z.B. GUI-Fenster oder einige Dialogfenster) automatisch minimiert werden, und um zu bewirken, dass die Schaltfläche in der Taskleiste des Hauptfensters versteckt wird. Um das Hauptfenster stattdessen normal minimieren zu lassen, überschreiben Sie das Standardverhalten mit OnMessage(). Zum Beispiel:
; Dies verhindert das Verstecken des Hauptfensters beim Minimieren: OnMessage(0x0112, Func("AutoMinimierenVerhindern")) ; WM_SYSCOMMAND = 0x0112 OnMessage(0x0005, Func("AutoMinimierenVerhindern")) ; WM_SIZE = 0x0005 ; Dies verhindert das automatische Minimieren untergeordneter GUI-Fenster (außer Dialogfenster): OnMessage(0x0018, Func("AutoMinimierenVerhindern")) AutoMinimierenVerhindern(wParam, lParam, uMsg, hwnd) { if (uMsg = 0x0112 && wParam = 0xF020 && hwnd = A_ScriptHwnd) { ; SC_MINIMIZE = 0xF020 WinMinimize return 0 ; Das Verstecken des Hauptfensters verhindern. } if (uMsg = 0x0005 && wParam = 1 && hwnd = A_ScriptHwnd) ; SIZE_MINIMIZED = 1 return 0 ; Das Verstecken des Hauptfensters verhindern. if (uMsg = 0x0018 && lParam = 1) ; SW_PARENTCLOSING = 1 return 0 ; Das Verstecken des untergeordneten Fensters verhindern. }
Der Titel des Hauptfensters wird von #SingleInstance- und Reload-Mechanismen verwendet, um andere Instanzen desselben Skripts zu identifizieren. Das Ändern des Titels verhindert, dass das Skript als solches identifiziert wird. Welcher Titel standardmäßig verwendet wird, hängt davon ab, wie das Skript geladen wurde:
Geladen aus | Titelausdruck | Beispiel |
---|---|---|
.ahk-Datei | A_ScriptFullPath " - AutoHotkey v" A_AhkVersion | E:\Mein Skript.ahk - AutoHotkey v1.1.33.09 |
Hauptressource (kompiliertes Skript) | A_ScriptFullPath | E:\Mein Skript.exe |
Jede andere Ressource | A_ScriptFullPath " - " A_LineFile | E:\Mein AutoHotkey.exe - *INTERNES-TOOL.AHK |
Der folgende Code zeigt, wie der Standardtitel mit dem Skript selbst ermittelt werden kann (wobei der tatsächliche Titel mit WinGetTitle abgerufen werden kann):
Titel := A_ScriptFullPath if !A_IsCompiled Titel .= " - AutoHotkey v" A_AhkVersion ; Für ein korrektes Ergebnis muss dies von der auszuführenden Ressource ausgewertet werden, ; nicht von einem #Include (es sei denn, das #Include wurde mit Ahk2Exe in das Skript inkludiert): else if SubStr(A_LineFile, 1, 1) = "*" && A_LineFile != "*#1" Titel .= " - " A_LineFile
Skripte können in eine Standard-AutoHotkey-EXE-Datei eingebettet werden, indem sie mit dem Ahk2Exe-Compiler als Win32-Ressourcen (RCDATA) hinzugefügt werden. Zusätzliche Skripte können mit der AddResource-Compilerdirektive hinzugefügt werden.
Ein eingebettetes Skript kann auf der Befehlszeile oder mit #Include durch Angabe eines Sternchens (*) gefolgt vom Ressourcennamen angegeben werden. Handelt es sich um eine Integer-ID, muss der Ressourcenname ein Rautezeichen (#) gefolgt von einer Dezimalzahl sein.
Das Programm kann automatisch Skriptcode aus den folgenden Ressourcen laden, wenn diese in der Datei vorhanden sind:
ID | Angabe | Verwendung |
---|---|---|
1 | *#1 | Dies ist das Mittel, mit dem ein kompiliertes Skript aus einer EXE-Datei erstellt wird. Dieses Skript wird automatisch ausgeführt, und die meisten Befehlszeilenoptionen werden an das Skript übergeben, anstatt vom Programm interpretiert zu werden. Externe Skripte und alternativ eingebettete Skripte können mit der Befehlszeilenoption /script ausgeführt werden. |
2 | *#2 | Wenn vorhanden, wird dieses Skript automatisch vor jedem Skript, das das Programm lädt, und vor jeder mit /include angegebenen Datei "inkludiert". |
Wenn die Quelle des Hauptskripts eine eingebettete Ressource ist, agiert das Programm im Modus "kompiliertes Skript", außer dass A_AhkPath immer den Pfad der aktuellen EXE-Datei enthält (derselbe wie A_ScriptFullPath). Für andere Ressourcen als *#1 wird der Ressourcenbezeichner in den Titel des Hauptfensters eingefügt, um #SingleInstance und Reload zu unterstützen.
Wenn A_LineFile von einem Code referenziert wird, der aus einer eingebetteten Ressource stammt, enthält es ein Sternchen (*) gefolgt vom Ressourcennamen.
Unter Befehlszeilenparameter an ein Skript übergeben finden Sie Informationen zur Befehlszeilennutzung und eine Liste von Befehlszeilenoptionen, die das Verhalten des Programms beeinflussen.
Zum Starten eines .ahk-Skripts ist nur die Datei AutoHotkey.exe erforderlich.
[AHK_L 51+]: Die Umbenennung von AutoHotkey.exe ändert auch, welches Skript standardmäßig ausgeführt wird, was eine Alternative zum Kompilieren des Skripts für die Verwendung auf einem Computer ohne installiertes AutoHotkey ist. Zum Beispiel führt MeinSkript.exe automatisch MeinSkript.ahk aus, wenn kein Dateiname angegeben ist, kann aber auch andere Skripte ausführen.
Um AutoHotkey automatisch in das Standardverzeichnis zu installieren (dasselbe Verzeichnis, das im Nicht-Silent-Modus angezeigt wird), starten Sie den Installer mit dem /S-Parameter. Zum Beispiel:
AutoHotkey_1.1.34.03_setup.exe /S
Mit dem /D-Parameter kann ein benutzerdefiniertes Standardverzeichnis angegeben werden (wenn /S weggelassen wird, ändert dies das Standardverzeichnis, das im Installer angezeigt wird). Zum Beispiel:
AutoHotkey_1.1.34.03_setup.exe /S /D=C:\Program Files\AutoHotkey
Version: Wenn AutoHotkey bereits installiert ist, erkennt der Installer automatisch, welche Version von AutoHotkey.exe standardmäßig gesetzt werden soll. Andernfalls wird standardmäßig Unicode 32-Bit verwendet, oder Unicode 64-Bit, wenn das Betriebssystem im 64-Bit-Format ist. Um zu überschreiben, welche Version von AutoHotkey.exe standardmäßig gesetzt wird, übergeben Sie einen der folgenden Parameter:
/A32
oder /ANSI
: ANSI 32-Bit./U64
oder /x64
: Unicode 64-Bit (nur für 64-Bit-Systeme gültig)./U32
: Unicode 32-Bit.Das folgende Beispiel installiert AutoHotkey automatisch und setzt ANSI 32-Bit als Standardversion:
AutoHotkey_1.1.34.03_setup.exe /S /A32
Deinstallieren: Um AutoHotkey automatisch zu deinstallieren, starten Sie Installer.ahk mit dem Parameter /Uninstall
. Zum Beispiel:
"C:\Programme\AutoHotkey\AutoHotkey.exe" "C:\Programme\AutoHotkey\Installer.ahk" /Uninstall
In Versionen älter als 1.1.08.00 muss uninst.exe /S
verwendet werden. Zum Beispiel:
"C:\Programme\AutoHotkey\uninst.exe" /S
Hinweis: Installer.ahk muss mit Adminrechten ausgeführt werden, um korrekt zu funktionieren.
Extrahieren [v1.1.09.04+]: In der unteren rechten Ecke der GUI des Installers befindet sich ein Link zum Extrahieren der Dateien ohne Installation. Alternativ kann die Befehlszeilenoption /E
verwendet werden. Zum Beispiel:
AutoHotkey_1.1.34.03_setup.exe /D=F:\AutoHotkey /E
Skripte neu starten [v1.1.19.02+]: Im automatischen Install/Uninstall-Modus werden laufende Skripte automatisch beendet, sofern erforderlich. Übergeben Sie die /R
-Option ohne zusätzliche Befehlszeilenparameter, um diese Skripte automatisch neu zu laden, und zwar mit der EXE, mit der sie ausgeführt wurden. Das Setup wird versuchen, die Skripte über den Explorer zu starten, folglich werden sie nicht mit Adminrechten ausgeführt, wenn UAC aktiviert ist.
Taskleistenschaltflächen [v1.1.08+]: In Windows 7 und höher werden Taskleistenschaltflächen von mehreren Skripten standardmäßig automatisch gruppiert oder zu einer Schaltfläche zusammengefasst. Die Option Separate taskbar buttons (Separate Taskleistenschaltflächen) deaktiviert dieses Verhalten, indem jede AutoHotkey-EXE-Datei als Host-App (IsHostApp) registriert wird.
[v1.1.24.02+]: Befehlszeileninstallationen können /IsHostApp
oder /IsHostApp=1
verwenden, um die Option zu aktivieren, und /IsHostApp=0
, um sie zu deaktivieren.
Die Installer-GUI verfügt über die Option "Add 'Run with UI Access' to context menus" ('Mit UI-Access ausführen' in das Kontextmenü einfügen). Diese Kontextmenüoption bietet einen Workaround für gängige UAC-bezogene Probleme, damit das Skript administrative Programme automatisieren kann - ohne dass das Skript mit Adminrechten laufen muss. Um das zu erreichen, wird der Installer folgendes tun:
Wenn eine dieser UIA-Dateien vor der Installation vorhanden ist, wird der Installer sie automatisch aktualisieren, selbst wenn die uiAccess-Option nicht aktiv ist.
Befehlszeileninstallationen können /uiAccess
oder /uiAccess=1
verwenden, um die Option zu aktivieren, und /uiAccess=0
, um sie zu deaktivieren. Standardmäßig aktiviert der Installer die Option, wenn UAC aktiv ist und die UI-Access-Kontextmenüoption vor der Installation vorhanden war.
Skripte, die andere Skripte mit UI-Access ausführen müssen, können einfach Run verwenden, um die entsprechende UIA.EXE-Datei mit den normalen Befehlszeilenparametern auszuführen.
Bekannte Einschränkungen:
ComObjActive("Word.Application")
fehlschlagen, weil Word nicht für UI-Access markiert wurde.#InstallMouseHook
), kann dazu führen, dass alle Maus-Hotkeys blockiert werden, wenn die Maus auf ein Fenster zeigt, das einem UIA-Skript gehört, sogar Hotkeys, die vom UIA-Skript selbst implementiert wurden. Ein Workaround besteht darin, sicherzustellen, dass die UIA-Skripte zuletzt geladen werden.Weitere Informationen finden Sie unter Enable interaction with administrative programs (Interaktion mit administrativen Programmen ermöglichen) im archivierten Forum.