SetKeyDelay

Bestimmt die Verzögerung, die nach jedem Tastendruck, der via Send oder ControlSend gesendet wird, 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 nie im Skript verwendet wird, gilt für den traditionellen SendEvent-Modus standardmäßig eine Verzögerung von 10. Für den SendPlay-Modus gilt standardmäßig eine Verzögerung von -1. Beide Modi verwenden standardmäßig eine DruckDauer (siehe unten) von -1.

DruckDauer

Bestimmte Videospiele und andere spezielle Anwendungen benötigen möglicherweise eine Verzögerung zwischen jedem Tastendruck (zwischen dem Drücken und Loslassen einer Taste).

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 wendet die oben genannten Einstellungen auf den SendPlay-Modus statt auf den traditionellen SendEvent-Modus an. Wenn dieser Parameter nie im Skript verwendet wird, gilt für SendPlay immer eine Verzögerung von -1/-1.

Bemerkungen

Hinweis: SetKeyDelay hat keinen Einfluss auf SendInput; 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, der via Send oder ControlSend gesendet wird, erfolgt automatisch eine kurze Verzögerung (Sleep). Diese Verzögerung ist notwendig, um die Zuverlässigkeit von Skripten zu verbessern, weil es Fenster gibt, die bei vielen schnellen Tastendrücken schnell überfordert sind.

Während der Verzögerung (Sleep) wird der aktuelle Thread unterbrechungsfrei gemacht.

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 von 1 bis 10 auf den meisten Windows XP-Systemen (und wahrscheinlich auch Windows 2000) äquivalent zu 10 oder 15.

Beim Send/SendEvent-Modus führt eine Verzögerung von 0 intern Sleep(0) aus. Dies bewirkt, dass die restliche Zeitscheibe des Skripts an jeden anderen Prozess, der sie benötigen könnte, übergeben wird. Wenn sie von keinem Prozess benötigt wird, erzeugt Sleep(0) überhaupt kein Sleep. Eine Verzögerung von -1 wird hingegen nie ein Sleep erzeugen. Für eine bessere Zuverlässigkeit wird 0 als Alternative zu -1 empfohlen.

Wenn die Verzögerung auf -1 gesetzt wird, hat die Prozesspriorität eines Skripts einen großen Einfluss darauf, wie schnell es Tastendrücke unter Verwendung des traditionellen SendEvent-Modus senden kann. Mit Process, Priority,, High kann die Priorität eines Skripts erhöht werden. Dies führt zwar in der Regel dazu, dass Tastendrücke schneller gesendet werden, als dass das aktive Fenster sie verarbeiten kann, doch das System puffert diese automatisch. Gepufferte Tastendrücke werden auch nach Abschluss des Send-Befehls im Zielfenster ankommen (selbst wenn das Fenster nicht mehr aktiv ist). Dies 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 von Verzögerung für den Send/SendEvent-Modus. [v1.1.23+]: A_KeyDuration enthält die aktuelle Einstellung von 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