Setzt einen HotKey, um eine selbsterstellte Funktion aufzurufen.
HotKeySet ( "key" [, "function"] )
key | Die Tastenkombination für den HotKey im gleichen Format wie Send(). Siehe Bemerkungen. |
function | [optional] Der Name der aufzurufenden Funktion. Wird der Parameter nicht angegeben, wird der vorher gesetzte HotKey gelöscht. |
Erfolg: | 1. |
Fehler: | 0. |
Es wird empfohlen Kleinbuchstaben (z.B. "b" und nicht "B") für Hotkeys zu verwenden. Um Fehler bei einigen Tastaturlayouts zu vermeiden, bei denen Klein- & Großbuchstabe auf unterschiedlichen Tasten liegen.
Tastaturen mit 102 Tasten wie die ungarische Tastatur benötigen "{OEM_102}" um die "í" Taste abzubilden.
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. Verwenden die Skripts GUIs, so sollten GUISetAccelerators angedacht werden, da die Tasten nur aktiv sind wenn das zugehörige GUI aktiv ist.
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:
ASC nnnn | Kann nicht wie in Send() verwendet werden. Es wird "A" als erstes Zeichen wie in Send() verwendet, wenn das "{...}" ungültig ist. |
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}'. |
#include <MsgBoxConstants.au3>
; Drücke Esc um das Skript zu beenden, Pause um es zu pausieren
Global $g_bPaused = False
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()
$g_bPaused = Not $g_bPaused
While $g_bPaused
Sleep(100)
ToolTip('Script ist pausiert', 0, 0)
WEnd
ToolTip("")
EndFunc ;==>TogglePause
Func Terminate()
Exit
EndFunc ;==>Terminate
Func ShowMessage()
MsgBox($MB_SYSTEMMODAL, "", "Das ist eine Nachricht.")
EndFunc ;==>ShowMessage
#include <MsgBoxConstants.au3> ; Um das Skript zu beenden ist Esc zu drücken, Pause/Break zum "Pausieren" Global $g_bPaused = False HotKeySet("{PAUSE}", "HotKeyPressed") HotKeySet("{ESC}", "HotKeyPressed") HotKeySet("+!d", "HotKeyPressed") ; Shift-Alt-d While 1 Sleep(100) WEnd Func HotKeyPressed() Switch @HotKeyPressed ; Der zuletzt gedrückte HotKey. Case "{PAUSE}" ; Die Zeichenfolge ist der {PAUSE} HotKey. $g_bPaused = Not $g_bPaused While $g_bPaused Sleep(100) ToolTip('Skript wurde "Pausiert"', 0, 0) WEnd ToolTip("") Case "{ESC}" ; Die Zeichenfolge ist der {ESC} HotKey. Exit Case "+!d" ; Die Zeichenfolge ist der Shift-Alt-d HotKey. MsgBox($MB_SYSTEMMODAL, "", "Dies ist eine Nachricht.") EndSwitch EndFunc ;==>HotKeyPressed