SetKeyDelay

Bestimmt die Verzögerung, die nach jedem Tastendruck 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 kleinstmögliche Verzögerung zu veranlassen (sobald jedoch der Play-Parameter vorhanden ist, erzeugen sowohl 0 als auch -1 keine Verzögerung). Lassen Sie diesen Parameter leer, um die aktuelle Verzögerung beizubehalten.

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

Druckdauer

Bestimmte Videospiele und andere spezielle Anwendungen benötigen möglicherweise eine Verzögerung zwischen jedem Tastendruck; also nach Drücken der Taste, aber bevor sie losgelassen wird.

Verwenden Sie -1, um die Verzögerung vollständig zu deaktivieren (Standardeinstellung), oder 0, um die kleinstmögliche Verzögerung zu veranlassen (sobald jedoch der Play-Parameter vorhanden ist, erzeugen sowohl 0 als auch -1 keine Verzögerung). Lassen Sie 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. Wenn dieser Parameter nie im Skript verwendet wird, 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 Tastendrücken. Das gleiche gilt für Send, wenn SendMode Input aktiv ist.

Nach jedem Tastendruck 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 es Fenster gibt, die mit vielen schnellen Tastaturereignissen nicht mithalten können.

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 Prozesspriorität des Skripts dahingehend ein wichtiger Faktor sein, wie schnell es unter Verwendung des traditionellen SendEvent-Modus Tastendrücke senden kann. Mit Process, Priority,, High kann die Priorität eines Skripts erhöht werden. Obwohl dadurch in der Regel Tastendrücke schneller gesendet werden, als sie vom aktiven Fenster verarbeitet werden können, puffert das System diese automatisch. Gepufferte Tastendrücke werden auch nach Abschluss des Send-Befehls im Zielfenster ankommen (selbst wenn das Fenster nicht mehr aktiv ist). Dieses Verhalten ist in der Regel harmlos, weil alle nachfolgenden Tastendrücke, die an dasselbe Fenster gesendet werden, hinter den bereits gepufferten Tastendrücken eingereiht 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) verwendet zu Beginn die Standardeinstellung des Befehls. Um diese zu ändern, muss der Befehl im automatischen Ausführungsbereich (ganz oben im Skript) angegeben werden.

Siehe auch

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

Beispiele

#1

SetKeyDelay, 0