Bestimmt die Verzögerung, die nach jedem via Send oder ControlSend gesendeten Tastendruck eintritt.
SetKeyDelay Verzögerung, DruckDauer, "Play"
Typ: Integer
Wenn weggelassen, wird die aktuelle Verzögerung beibehalten. Andernfalls geben Sie die Zeit in Millisekunden an. Geben Sie -1 an, 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).
Typ: Integer
Bestimmte Videospiele und andere spezielle Anwendungen benötigen möglicherweise eine Verzögerung zwischen jedem Tastendruck (zwischen dem Drücken und Loslassen einer Taste).
Wenn weggelassen, wird die aktuelle Druckdauer beibehalten. Andernfalls geben Sie die Zeit in Millisekunden an. Geben Sie -1 an, 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).
Hinweis: DruckDauer erzeugt auch eine Verzögerung nach jeder Zustandsänderung einer Modifikatortaste (Strg, Alt, Umschalt und Win), um die zu sendenden Tasten zu unterstützen.
Typ: Zeichenkette
Wenn leer oder weggelassen, werden die Verzögerung und die Druckdauer auf den traditionellen SendEvent-Modus angewendet. Andernfalls geben Sie das Wort Play an, um beide auf den SendPlay-Modus anzuwenden. Wenn ein Skript diesen Parameter nie verwendet, sind beide immer -1 für SendPlay.
Wenn SetKeyDelay nicht verwendet wird, ist die Verzögerung standardmäßig 10 für den traditionellen SendEvent-Modus und -1 für den SendPlay-Modus. Beide Modi verwenden standardmäßig eine Druckdauer von -1.
SetKeyDelay hat keinen Einfluss auf SendInput, d.h. es erfolgt keine Verzögerung zwischen den Tastendrücken. Dasselbe gilt für Send, wenn SendMode Input aktiv ist.
Nach jedem Tastendruck via Send oder ControlSend erfolgt automatisch eine kurze Verzögerung (Sleep). Diese Verzögerung ist notwendig, um die Zuverlässigkeit von Skripten zu verbessern, da es Fenster gibt, die mit vielen schnellen Tastendrücken nicht mithalten können.
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.
Im Send/SendEvent-Modus führt eine Verzögerung von 0 intern Sleep(0) aus, das die restliche Zeitscheibe des Skripts an jeden anderen Prozess weitergibt, der sie benötigen könnte. Wenn es keine gibt, erzeugt Sleep(0) überhaupt kein Sleep. Eine Verzögerung von -1 wird hingegen nie ein Sleep erzeugen. Für eine höhere Zuverlässigkeit wird 0 als Alternative zu -1 empfohlen.
Wenn die Verzögerung auf -1 gesetzt ist, hat die Prozesspriorität eines Skripts einen großen Einfluss darauf, wie schnell es Tastendrücke im traditionellen SendEvent-Modus senden kann. Um die Priorität eines Skripts zu erhöhen, verwenden Sie ProcessSetPriority "High"
. Obwohl dies normalerweise dazu führt, dass Tastendrücke schneller gesendet werden, als das aktive Fenster sie verarbeiten kann, werden sie vom System automatisch gepuffert. Gepufferte Tastendrücke erreichen das Zielfenster auch nach Abschluss der Send-Funktion (selbst wenn das Fenster nicht mehr aktiv ist). Dies ist in der Regel harmlos, da 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. A_KeyDuration enthält die aktuelle Einstellung von DruckDauer, während A_KeyDelayPlay und A_KeyDurationPlay die Einstellungen für SendPlay enthalten.
Jeder neue Thread (z.B. ein Hotkey, ein benutzerdefinierter Menüpunkt oder eine zeitgesteuerte Subroutine) verwendet zunächst die Standardeinstellung der Funktion. Diese Standardeinstellung kann geändert werden, indem die Funktion während der Startphase des Skripts verwendet wird.
Send, ControlSend, SendMode, SetMouseDelay, SetControlDelay, SetWinDelay, Click
Veranlasst nach jedem Tastendruck via Send oder ControlSend die kleinstmögliche Verzögerung.
SetKeyDelay 0