Funktionsreferenz

HotKeySet

Setzt einen HotKey, um eine selbsterstellte Funktion aufzurufen.

HotKeySet ( "key" [, "function"] )

 

Parameter

key Die Tastenkombination für den HotKey im gleichen Format wie Send().
function [optional] Der Name der aufzurufenden Funktion. Wird der Parameter nicht angegeben, wird der vorher gesetzte HotKey gelöscht.

 

Rückgabewert

Erfolg: Gibt 1 zurück.
Fehler: Gibt 0 zurück.

 

Bemerkungen

Wenn zwei Skripte den gleichen HotKey (Tastenkombination) setzen, sollte man vermeiden, beide Skripte parallel auszuführen.
(Das zweite Skript kann den HotKey nicht abfangen, solange das erste Skript nicht beendet wurde oder den Hotkey freigegeben hat, bevor das zweite Skript diesen setzt.)

Ein HotKey unterbricht "typischerweise" das aktive Autoit Skript und führt die angegebene Funktion bis zu deren Schluss aus, es sei denn, deren Ausführung wird ebenfalls unterbrochen.

Folgende Ausnahmen existieren:
1) Wenn die aktuelle Funktion eine "blockierende" Funktion ist (Tastenbetätigungen werden unterdrückt), dann werden die Tastendrücke gepuffert und sofort nach der blockierenden Funktion ausgeführt. MsgBox und FileSelectFolder sind Beispiele für blockierende Funktionen. Teste das Verhalten anhand des SHIFT+ALT+D Beispiels.
2) Wenn das Autoit Skript durch einen Klick auf das TrayIcon (Pause) pausiert wurde, werden alle HotKeys ignoriert.

Folgende HotKeys können nicht genutzt werden:

Strg+Alt+Entf Reserviert von Windows selbst
F12 Ebenfalls durch Windows reserviert (API)
Ziffernblock Enter Taste Man sollte stattdessen {Enter} verwenden, da hierbei beide Enter-Tasten abgefangen werden.
Win+B,D,E,F,L,M,R,U; und Win+Shift+M Reserviert durch Windows
Anmerkung: Win+B und Win+L könnten nur bei Windows XP und höher reserviert sein.
Alt, Strg, Shift, Win Dies sind Modifizierungstasten
Weitere Jede globale Tastenkombination, die mit einer anderen Software definiert wurde, und jede Kombination aus Basistasten, wie '{F1}{F2}', sowie jede Form von '{LALT}' oder '{ALTDOWN}'.

Wenn ein Hotkey gesetzt ist, wird dieser Tastendruck abgefangen. Autoit wird ihn nicht an die aktive Anwendung weitergeben. Ausnahmen sind: (NumLock, CapsLock, und ScrollLock). Diese ändern ihren Status.

Um eine Tastenkombination zu senden, welche ein HotKeySet Ereignis auslösen würde, ist ControlSend() zu verwenden oder der Hotkey ist vorher freizugeben, da ansonsten eine Endlosschleife entstehen könnte.

; Abfangen und Weitergeben von Tastendrücken
HotKeySet("{Esc}","captureEsc")
Func captureEsc()
    HotKeySet("{Esc}")
    ; ... mach irgendwas
    Send("{Esc}")
    HotKeySet("{Esc}","captureEsc")
EndFunc


Der aufzurufenden Funktion können keine Parameter übergeben werden. Diese werden ignoriert.

Das @HotKeyPressed Makro kann innerhalb von Funktionen genutzt werden, um z.B. mehrere Tasten gleichzeitig zu verwalten.

 

Verwandte Funktionen

Send, GUISetAccelerators

 

Beispiel


; Drücke Esc um das Skript zu beenden, Pause um es zu pausieren

Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")
HotKeySet("+!d", "ShowMessage")  ; Shift-Alt-d

;;;; Hier ist der Hauptteil des Programms ;;;;
While 1
    Sleep(100)
WEnd
;;;;;;;;

Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
        sleep(100)
        ToolTip('Script ist pausiert',0,0)
    WEnd
    ToolTip("")
EndFunc

Func Terminate()
    Exit 0
EndFunc

Func ShowMessage()
    MsgBox(4096,"","Das ist eine Nachricht.")
EndFunc