BlockInput

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

BlockInput OnOff
BlockInput SendMouse
BlockInput MouseMove

Parameter

OnOff

Typ: Zeichenkette oder Integer

Dieser Modus blockiert bedingungslos alle Benutzereingaben. Geben Sie einen der folgenden Werte an:

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

Off oder 0 (false): Aktiviert die Eingabe wieder.

SendMouse

Typ: Zeichenkette

Dieser Modus blockiert Benutzereingaben nur während der Ausführung bestimmter Send- und/oder Mausfunktionen. Geben Sie eines der folgenden Wörter an:

Send: Die Tastatur- und Mauseingaben des Benutzers werden ignoriert, während SendEvent Tasten sendet (einschließlich Send und SendText, wenn SendMode "Event" verwendet wurde). 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 (es sei denn, sie ist noch durch ein vorheriges BlockInput "On" blockiert).

Mouse: Die Tastatur- und Mauseingaben des Benutzers werden ignoriert, während Click, MouseMove, MouseClick oder MouseClickDrag Mausaktionen ausfü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 die Mausaktion abgeschlossen ist, wird die Eingabe wieder aktiviert (es sei denn, sie ist noch durch ein vorheriges BlockInput "On" blockiert).

SendAndMouse: Eine Kombination der beiden obigen Modi.

Default: Schaltet den Send- und Mouse-Modus aus, ändert aber nicht den aktuellen Status der Eingabeblockierung. Zum Beispiel kann BlockInput "On" nicht durch BlockInput "Default" deaktiviert werden.

MouseMove

Typ: Zeichenkette

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 diese Funktion zum ersten Mal verwendet, wird der Maus-Hook installiert (falls noch nicht geschehen). Jedes Mal, wenn das Skript eine Suspend- oder Hotkey-Funktion erreicht, wird geprü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) funktionieren unabhängig voneinander. Zum Beispiel ist es jederzeit möglich, BlockInput "On" und BlockInput "Off" zu verwenden, 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 Wirkung, wenn UAC aktiv ist oder das Skript ohne Adminrechte gestartet wurde. Weitere Informationen finden Sie in der FAQ.

Anstelle von BlockInput ist es oft besser, SendMode "Input" oder SendMode "Play" zu verwenden, 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 danach gesendet. Der Verzicht auf BlockInput verhindert auch, dass hängende Tasten umgangen werden müssen, wie im nächsten Absatz beschrieben.

Es kann vorkommen, dass Tasten "hängen bleiben", wenn der Benutzer sie gedrückt hält, während BlockInput aktiviert wird. Dies lässt sich vermeiden, indem man wartet, bis die Tasten losgelassen werden, bevor man BlockInput einschaltet. Zum Beispiel:

^!p::
{
    KeyWait "Control"  ; Warten, bis die Taste losgelassen wird. Verwende ein KeyWait pro Hotkey-Modifikator.
    KeyWait "Alt"
    BlockInput true
    ; ... Tastendrücke und Mausklicks senden ...
    BlockInput false
}

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 ausgelöst werden, wenn BlockInput eingeschaltet ist. Dazu gehören z.B. MButton (Maus-Hook) und LWin & Space (Tastatur-Hook mit explizitem Präfix anstelle von Modifikatoren $#).

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

SendMode, Send, Click, MouseMove, MouseClick, MouseClickDrag

Beispiele

Öffnet Notepad und fügt Uhrzeit/Datum durch Senden von F5 ein, während BlockInput eingeschaltet ist. Beachten Sie, dass BlockInput möglicherweise nur funktioniert, wenn das Skript mit Adminrechten ausgeführt wurde.

BlockInput true
Run "notepad"
WinWaitActive "ahk_class Notepad"
Send "{F5}" ; Fügt Uhrzeit und Datum ein
BlockInput false