#IfTimeout [AHK_L 8+]

Bestimmt die maximale Zeit, die zur Auswertung eines einzelnen #If-Ausdrucks aufgebracht wird.

#IfTimeout Zeitlimit

Parameter

Zeitlimit

Zeitlimit-Wert in Millisekunden, der global gelten soll.

Bemerkungen

Wenn diese Direktive im Skript nicht angegeben ist, verhält sie sich so, als wäre sie auf 1000 (Millisekunden) gesetzt.

Das Zeitlimit wurde implementiert, um zu verhindern, dass lang laufende Ausdrücke den Tastatureingabeprozess blockieren. Sobald das Zeitlimit überschritten ist, wird der Ausdruck weiter ausgewertet, aber der Tastatur-Hook fortgesetzt, als hätte der Ausdruck bereits False zurückgegeben.

Beachten Sie, dass das System sein eigenes Zeitlimit implementiert, das im DWORD-Wert LowLevelHooksTimeout des folgenden Registry-Schlüssels definiert ist:

HKEY_CURRENT_USER\Control Panel\Desktop

Wenn das Systemzeitlimit überschritten ist, kann es passieren, dass das System den Tastatur-Hook des Skripts nicht mehr aufruft und folglich Hook-Hotkeys nicht mehr funktionieren, bis der Hook neu registriert oder das Skript neu geladen wird. Der Hook kann üblicherweise durch Suspendieren und Entsuspendieren aller Hotkeys neu registriert werden.

Genauere Angaben zu diesem Zeitlimit sind in der Dokumentation von Microsoft nicht zu finden, aber Untersuchungen haben ergeben, dass für Windows 7 und höher folgendes gilt: Wenn LowLevelHooksTimeout nicht definiert ist, gilt standardmäßig ein Zeitlimit von 300 ms. Der Hook kann das Zeitlimit maximal 10-mal überschreiten, bevor er beim 11. Mal stillschweigend entfernt wird.

Wenn ein bestimmter Hotkey mehrere #If-Varianten hat, könnte das Zeitlimit auf jede Variante separat angewendet werden, was die Wahrscheinlichkeit erhöht, dass das Systemzeitlimit überschritten wird. Dieser Sachverhalt könnte in einer zukünftigen Version geändert werden.

#IfTimeout kann wie alle anderen Direktiven nicht bedingt ausgeführt werden.

#If

Beispiele

Setzt das #If-Zeitlimit auf 10 ms statt 1000 ms.

#IfTimeout 10