BlockInput

Deaktiviert oder aktiviert die Fähigkeit des Benutzers, mit dem Computer mittels Tastatur und Maus zu interagieren.

BlockInput, OnOff
BlockInput, SendMouse
BlockInput, MouseMove  ; [v1.0.43.11+]

Parameter

OnOff

Dieser Modus blockiert bedingungslos alle Benutzereingaben. Geben Sie eines der folgenden Wörter an:

On: Der Benutzer kann nicht länger mit dem Computer interagieren (Maus- und Tastatureingaben haben keine Wirkung).

Off: Aktiviert wieder die Eingabe.

[v1.1.30+]: Es ist möglich, die dezimalen Werte 1 und 0 anstelle von On bzw. Off zu verwenden.

SendMouse

Dieser Modus blockiert nur Benutzereingaben, während bestimmte Send- und/oder Mouse-Befehle ausgeführt werden. Geben Sie eines der folgenden Wörter an:

Send: Die Tastatur- und Mauseingaben des Benutzers werden ignoriert, während Send oder SendRaw Tasten sendet (dies gilt nur für den traditionellen SendEvent-Modus). Dadurch wird verhindert, dass die Tastendrücke des Benutzers die Ausführung der simulierten Tastendrücke stören. Wenn das Senden beendet ist, wird die Eingabe wieder aktiviert (sofern sie nicht durch ein vorheriges BlockInput On blockiert wird).

Mouse: Die Tastatur- und Mauseingaben des Benutzers werden ignoriert, während Click, MouseMove, MouseClick oder MouseClickDrag Mausaktionen durchführt (dies gilt nur für den traditionellen SendEvent-Modus). Dadurch wird verhindert, dass die Mausaktionen des Benutzers künstlich gesendete Mausereignisse stören. Wenn der Mausbefehl seine Aktion durchgeführt hat, wird die Eingabe wieder aktiviert (sofern sie nicht durch ein vorheriges BlockInput On blockiert wird).

SendAndMouse: Eine Kombination der beiden oben genannten Einstellungen.

Default: Schaltet die Send- und Mouse-Einstellung aus, aber ändert nicht den aktuellen Zustand der Eingabeblockierung. BlockInput On beispielsweise kann nicht durch BlockInput Default deaktiviert werden.

MouseMove [v1.0.43.11+]

Dieser Modus blockiert nur die Bewegung des Mauszeigers. Geben Sie eines der folgenden Wörter an:

MouseMove: Der Mauszeiger wird sich nicht bewegen, wenn der Benutzer die Maus physisch bewegt (eine mögliche Ausnahme sind DirectInput-Anwendungen). Wenn ein Skript diesen Befehl zum ersten Mal verwendet, wird der Maus-Hook installiert (falls noch nicht geschehen). Darüber hinaus wird das Skript persistent; das heißt, dass das Skript nur noch mit ExitApp beendet werden kann. Jedes Mal, wenn das Skript einen Suspend- oder Hotkey-Befehl erreicht, wird überprüft, ob der Maus-Hook noch von Hotkeys oder Hotstrings beansprucht wird. Ist dies nicht der Fall, wird der Hook wieder deinstalliert (siehe #Hotstring NoMouse).

MouseMoveOff: Der Benutzer darf den Mauszeiger wieder bewegen.

Bemerkungen

Alle drei BlockInput-Modi (OnOff, SendMouse und MouseMove) operieren unabhängig voneinander. Es ist zum Beispiel möglich, jederzeit BlockInput On und BlockInput Off zu nutzen, während eines der Wörter von SendMouse aktiv ist. Ein weiteres Beispiel: Wenn BlockInput On und BlockInput MouseMove gleichzeitig aktiv sind, kann der Mauszeiger erst bewegt werden, wenn beide ausgeschaltet werden.

Hinweis: Die Modi OnOff und SendMouse haben möglicherweise keine Auswirkung, wenn UAC aktiv ist oder das Skript nicht als Administrator gestartet wurde. Weitere Informationen finden Sie in der FAQ.

Anstelle von BlockInput ist es oft besser, SendMode Input oder SendMode Play zu nutzen, damit Tastendrücke und Mausklicks nicht unterbrochen werden können. Diese Modi verhindern im Gegensatz zu BlockInput, dass die Eingaben des Benutzers während des Sendens verworfen werden; stattdessen werden solche Tastendrücke gepuffert und später gesendet. Der Verzicht auf BlockInput verhindert auch, dass Tasten, die hängen bleiben, wie im nächsten Abschnitt beschrieben umgangen werden müssen.

Es kann vorkommen, dass Tasten "hängen bleiben", wenn der Benutzer sie gedrückt hält, während BlockInput aktiviert wird. Das folgende Beispiel zeigt, wie man das umgehen kann, indem man zuerst wartet, bis Tasten losgelassen werden, und dann BlockInput einschaltet:

^!p::
KeyWait Control  ; Wartet, bis die Taste losgelassen wird.  Verwenden Sie für jeden Hotkey-Modifikator ein eigenes KeyWait.
KeyWait Alt
BlockInput On
; ... Tastendrücke und Mausklicks senden ...
BlockInput Off
return

Die Eingabeblockierung wird vorübergehend deaktiviert, wenn ein Alt-Ereignis gesendet wird (und danach wieder aktiviert).

BlockInput blockiert die Eingaben des Benutzers, aber nicht die simulierten Tastendrücke und Mausklicks von AutoHotkey. Durch Drücken von Strg+Alt+Entf wird die Eingabe jedoch aufgrund einer Windows-API-Funktion wieder aktiviert.

Bestimmte Arten von Hook-Hotkeys können auch dann noch ausgelöst werden, wenn BlockInput eingeschaltet ist. Darunter fallen würde zum Beispiel MButton (Maus-Hook) und LWin & Space (Tastatur-Hook mit explizitem Präfix statt den Modifikatoren $#).

Die Eingabe wird automatisch wieder aktiviert, wenn das Skript beendet wird.

Siehe auch

SendMode, Send, Click, MouseMove, MouseClick, MouseClickDrag

Beispiele

#1

BlockInput, On
Run, notepad
WinWaitActive, Unbenannt - Editor
Send, {F5} ; Fügt Uhrzeit und Datum ein
BlockInput, Off