SetKeyDelay

Setzt eine Verzögerung, die nach jeder Tastatureingabe via Send und ControlSend erfolgen soll.

SetKeyDelay [, Verzögerung, Druckdauer, Play]

Parameter

Verzögerung

Zeit in Millisekunden (kann ein Ausdruck sein). Verwenden Sie -1, um die Verzögerung vollständig zu deaktivieren, oder 0, um die kleinst mögliche Verzögerung zu veranlassen (sobald jedoch der Play-Parameter vorhanden ist, erzeugen sowohl 0 als auch -1 keine Verzögerung). Lass diesen Parameter leer, um die aktuelle Verzögerung beizubehalten.

Wenn SetKeyDelay nirgendwo im Skript angegeben wurde, gilt standardmäßig eine Verzögerung von 10 für den traditionellen SendEvent-Modus. Für den SendPlay-Modus gilt standardmäßig eine Verzögerung von -1. Bei beiden Methoden gilt standardmäßig eine Druckdauer von -1.

Druckdauer

Bestimmte Spiele und andere spezielle Anwendungen benötigen möglicherweise eine Verzögerung zwischen jeder Tastatureingabe; also nach Drücken und vor Loslassen der Taste.

Verwenden Sie -1, um die Verzögerung vollständig zu deaktivieren (Standardeinstellung), oder 0, um die kleinst mögliche Verzögerung zu veranlassen (sobald jedoch der Play-Parameter vorhanden ist, erzeugen sowohl 0 als auch -1 keine Verzögerung). Lass diesen Parameter leer, um die aktuelle Druckdauer beizubehalten.

Hinweis: Druckdauer erzeugt zudem eine Verzögerung nach jeder Zustandsänderung eines Modifikators (STRG, ALT, UMSCHALT und WIN), um die zu sendenden Tasten unterstützen zu können.

Dieser Parameter kann ein Ausdruck sein.

Play
[v1.0.43+]

Das Wort Play gilt für die oben genannten Einstellungen bzgl. des SendPlay-Modus, aber nicht für den traditionellen SendEvent-Modus. Fehlt dieser Parameter, gilt für SendPlay immer eine Verzögerung von -1/-1.

Bemerkungen

Hinweis: SetKeyDelay wird nicht von SendInput berücksichtigt; in diesem Modus gibt es keine Verzögerung zwischen den Tastatureingaben. Das gleiche gilt für Send, wenn SendMode Input aktiv ist.

Nach jeder Tastatureingabe via Send oder ControlSend erfolgt automatisch eine kurze Verzögerung (Pause). Diese Verzögerung ist notwendig, um die Zuverlässigkeit der Skripte zu verbessern, weil ein Fenster manchmal viele Tastatureingaben nicht so schnell verarbeiten kann.

Durch die Granularität (Ungenauigkeit) der Zeiterfassung im Betriebssystem werden Verzögerungen möglicherweise auf das nächstmögliche Vielfache von 10 oder 15 aufgerundet. Zum Beispiel ist eine Verzögerung zwischen 1 und 10 in den meisten XP-Systemen (und wahrscheinlich auch in 2000) gleichbedeutend mit 10 oder 15.

Beim Send/SendEvent-Modus führt eine Verzögerung von 0 intern ein Sleep(0) aus - diese Funktion übergibt den Restwert des Skript-Zeitintervalls an andere Prozesse, die diesen Wert benötigen. Wenn es solche Prozesse nicht gibt, wird Sleep(0) überhaupt keine Verzögerung durchführen. Eine Verzögerung von -1 würde hingegen nie eine Ruhephase erzeugen. Um die Zuverlässigkeit zu erhöhen, sollte allerdings eine 0 statt -1 verwendet werden.

Wenn die Verzögerung auf -1 gesetzt wurde, wird die Prozess-Priorität des Skripts dahingehend ein wichtiger Faktor sein, wie schnell es unter Verwendung des traditionellen SendEvent-Modus Tastatureingaben senden kann. Mit Process, Priority,, High kann die Priorität eines Skripts erhöht werden. Zwar werden dadurch Tastatureingaben schneller gesendet als vom aktiven Fenster verarbeitet, allerdings wird das System sie automatisch zwischenspeichern. Zwischengespeicherte Tastatureingaben werden auch nach Beendigung des Send-Befehls weiter an das Zielfenster gesendet (selbst wenn das Fenster nicht länger aktiv ist). Dieses Verhalten ist in der Regel harmlos, weil jede nachfolgende Tastatureingabe, die an dasselbe Fenster gesendet werden soll, an den bereits zwischengespeicherten Tastatureingaben in der Warteschlange angefügt werden.

Die interne Variable A_KeyDelay enthält die aktuelle Einstellung der Verzögerung im Send/SendEvent-Modus. [v1.1.23+]: A_KeyDuration enthält die Einstellung für Druckdauer, während A_KeyDelayPlay und A_KeyDurationPlay die Einstellungen für SendPlay enthalten.

Jeder neu gestartete Thread (z. B. ein Hotkey, ein benutzerdefinierter Menüpunkt oder eine zeitgesteuerte Subroutine) beginnt mit der Standardeinstellung des Befehls. Diese Standardeinstellung kann geändert werden, wenn man diesen Befehl bereits im automatischen Ausführungsbereich (am Anfang des Skripts) definiert.

Siehe auch

Send, ControlSend, SendMode, SetMouseDelay, SetControlDelay, SetWinDelay, SetBatchLines, Click

Beispiel

SetKeyDelay, 0