Яндекс.Метрика

SetKeyDelay -Autohotkey

Устанавливает величину паузы, которая вставляется после каждого нажатия, посылаемого командами Send и ControlSend.

Устанавливает величину паузы, которая вставляется после каждого нажатия, посылаемого командами Send и ControlSend.

SetKeyDelay [, Delay, PressDuration, Play]

Параметры

Delay Пауза в миллисекундах (может быть выражением). Используйте значение -1 для отсутствия паузы вообще, 0 - для наименьшей возможной паузы (однако, если также задан параметр Play, то и -1, и 0 означают отсутствие паузы). Чтобы сохранить текущее значение Delay, оставьте этот параметр пустым.
PressDuration Длительность нажатия (может быть выражением). Некоторые игры и другие специализированные приложения могут требовать паузу внутри нажатия, т.е. между нажатием и отпусканием.

Используйте значение -1 (по умолчанию) для отсутствия паузы вообще, 0 - для наименьшей возможной паузы (однако, если также задан параметр Play, то и -1, и 0 означают отсутствие паузы). Чтобы сохранить текущее значение PressDuration, оставьте этот параметр пустым.

Замечание: PressDuration также вставляет паузу после каждого изменения в состоянии клавиш-модификаторов (CTRL, ALT, SHIFT, WIN), если они используются при посылке клавиш.
Play [с версии 1.0.43] Если указано слово Play, описанные выше настройки применяются к SendPlay, а не к традиционному режиму SendEvent. Если этот параметр ни разу не используется в скрипте, паузы для SendPlay равны -1/-1.

Примечания

Действие SetKeyDelay не распространяется на SendInput, в этом режиме нет пауз между нажатиями. Это же верно для Send, если действует команда SendMode Input.

Короткая пауза вставляется автоматически после каждого нажатия, посылаемого командами Send или ControlSend. Это делается для повышения надёжности работы скриптов, поскольку окна иногда могут не успевать за быстрым потоком нажатий.

В силу дискретности шкалы времени операционной системы паузы могут округляться до ближайшего числа, кратного 10. Например, пауза между 1 и 10 (включительно) эквивалентна 10 в Windows XP (и, вероятно, в NT и 2000).

В режиме Send/SendEvent пауза 0 означает выполнение Sleep(0), при этом остаток кванта процессорного времени, выделенного скрипту, отдаётся другому нуждающемуся в этом процессу. Если такого процесса нет, Sleep(0) не производит паузы. В отличие от этого, пауза -1 означает, что паузы не будет никогда. Для большей надёжности рекомендуется использовать 0, а не -1.

При паузе -1 приоритет процесса скрипта становится важным фактором, влияющим на скорость посылки нажатий в традиционном режиме SendEvent. Чтобы поднять приоритет, используйте команду Process, Priority,, High. Хотя это, как правило, приводит к тому, что нажатия посылаются быстрее, чем окно может их обработать, система автоматически их буферизует. Буферизованные нажатия продолжают поступать в целевое окно после завершения работы команды Send (даже если окно уже перестало быть активным). Это обычно не вызывает проблем, поскольку все последующие нажатия, посылаемые в это же окно, ставятся в очередь после тех, что уже находятся в буфере.

Если Delay не был явно задан, для традиционного режима SendEvent он имеет значение по умолчанию 10 (20 для скриптов .aut). Для SendPlay умолчательное значение Delay равно -1. PressDuration по умолчанию равен -1 для обоих режимов.

Встроенная переменная A_KeyDelay содержит текущее значение Delay для Send/SendEvent. Для SendPlay такой переменной нет. Также отсутствует встроенная переменная для текущего значения PressDuration.

Каждый новый поток (запускаемый через горячую клавишу, пункт меню или таймер) стартует со значениями по умолчанию для этой команды. Эти умолчательные значения можно изменить, если использовать эту команду в секции автовыполнения (вверху скрипта).

Пример

SetKeyDelay, 0
Теги страницы: