Funktionsreferenz

HotKeySet

Setzt einen HotKey, der eine nutzerdefinierte Funktion aufruft.

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

 

Parameter

key Die Taste(n), die als HotKey verwendet werden sollen.Es gilt das selbe Format wie bei Send().
function [optional] Der Name der Funktion, die bei Drücken des HotKeys aufgerufen werden soll. Wenn du einen HotKey wieder entfernen willst, dann lässt du diesen Parameter einfach leer.

 

Bemerkungen

Es können pro Skript maximal 64 HotKeys gesetzt werden.

Wenn zwei AutoIt-Skripte den gleichen HotKey setzen, dann solltest du die beiden Skripte nicht gleichzeitig ausführen. (Das zweite Skript kann den HotKey nicht registieren, außer wenn das erste ihn freigbit oder sich selbst schließt, bevor das erste Skript ihn zu setzen versucht.)

Ein HotKey unterbricht *normalerweise* die aktive AutopIt-Funktion oder -Befehle und führt die nutzerdefinierte Funktion bis zu deren Ende oder Unterbrechung aus. Ausnahmen:
1) Wenn die laufende Funktion den Programmablauf blockiert, dann werden die Tastendrücke gespeichert und dann nach Beendigung dieser Funktion abgearbeitet. MsgBox und FileSelectFolder sind z.B. blockierende Funktionen. Teste das Verhalten von Shift + Alt + D im Beispiel.
2) Wenn das Skript über das TrayIcon pausiert wird, werden alle HotKeys, die in diesem Zusatnd gedrückt werden, ignoriert.

Die folgenden HotKeys können nicht gesetzt werden:

STRG+Alt+Del Ist von Windows reserviert
F12 Ist laut der WinAPI auch von Windows reserviert
Enter-Taste auf dem Ziffernblock Benutze statt dessen {Enter}, was beide Enter-Tasten abdeckt
Win+B,D,E,F,L,M,R,U und Win+Shift+M Das sind Kern-HotKeys von Windows. Hinweis: Win+B und Win+L sind möglicherweise nur in Windows XP und höher reserviert.
Alt, Ctrl, Shift, Win Das sind nur Funktionstasten.
Other Alle globalen HotKeys, die der Nutzer mittels Fremdsoftware gesetzt hat, alle Kombinationen von zwei oder mehr "Basistasten", wie z.B. '{F1}{F2}', und alle Tasten der Form '{LALT}' oder '{ALTDOWN}'.

Wenn du einen HotKey setzt, fängt AutoIt jeden Druck dieser Tastenkombination ab, und reicht ihn nicht an das aktive Fenster weiter. Einzige Ausnahme: Die Lock-Tasten (NumLock, CapsLock, and ScrollLock) nehemn immer noch den entsprechenden Status ein! Wenn du den abgefangenen HotKey-Tastendruck dennoch an das aktive Fenster weiterreichen willst, dann musst du den HotKey zunächst löschen, bevor du Send oder ControlSend verwenden kannst:

; jeden Tastendruck abfangen und weiterreichen
HotKeySet("{Esc}", "captureEsc")
Func captureEsc()
    ; ... Hier kann etwas gemacht werden
    HotKeySet("{Esc}")
    Send("{Esc}")
    HotKeySet("{Esc}", "captureEsc")
EndFunc


 

Siehe auch

Send, ControlSend

 

Beispiel


; Press Esc to terminate script, Pause/Break to "pause"

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

;;;; Body of program would go here ;;;;
While 1
    Sleep(100)
WEnd
;;;;;;;;

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

Func Terminate()
    Exit 0
EndFunc

Func ShowMessage()
    MsgBox(4096,"","This is a message.")
EndFunc