Функция HotKeySet

         Описание функции


HotKeySet

Устанавливает горячую клавишу для вызова пользовательской функции.

HotKeySet ( "key" [, "function" ] )

Параметры

key Комбинация клавиш для использования в качестве горячей клавиши. Формат такой же как и у Send().
function [необязательный] Имя функции, которая будет вызвана при использовании горячей клавиши. Отсутствие этого параметра приводит к сбросу ранее установленной горячей клавиши.

Возвращаемое значение

Успех:Возвращает 1.
Ошибка:Возвращает 0.

Примечания

Лучше использовать клавиши клавиатуры в нижнем регистре для таких клавиатур как русская, клавиша без Shift не является в нижнем регистре. То есть "D" не является "B" в верхнем регистре. Горячая клавиша не будет установлена и вернёт ошибку.

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

Нажатие горячей клавиши *обычно* прерывает активную функцию AutoIt, выполняется указанная пользовательская функция, после чего скрипт продолжает работу с прерванного места. Исключение:
1) Если текущая функция является "блокирующей", тогда нажатие клавиш помещается в буфер и проверяется только тогда, когда блокирующая функция завершит свою работу. Пример блокирующих функций - MsgBox() и FileSelectFolder(). Попробуйте нажать Shift-Alt-d в ниже приведённом примере.
2) Если работа скрипта приостановлена (нажатием на иконку AutoIt в трее), то любая горячая клавиша, нажатая в течение паузы, игнорируется.

Следующие горячие клавиши не могут быть установлены:

Ctrl+Alt+Delete Зарезервировано в Windows
F12 Это также зарезервировано в Windows, согласно API.
Клавиша Enter цифровой клавиатуры Взамен используйте {Enter}, который реагирует на обе клавиши Enter.
Win+B,D,E,F,L,M,R,U и Win+Shift+M Встроенные сочетания Windows. Примечание: Win+B и Win+L могут быть зарезервированы Windows XP и выше.
Alt, Ctrl, Shift, Win Это клавиши модификаторы!
Другие Любые глобальные горячие клавиши пользователя, определяемые сторонним программным обеспечением, любые комбинации из двух и более "базовых клавиш" такие, как '{F1}{F2}', и все клавиши в виде '{LALT}' или '{ALTDOWN}'.
   
Когда вы устанавливаете горячую клавишу, AutoIt улавливает нажатия клавиш и не передаёт их в активное приложение, за исключением: запирающие клавиши (NumLock, CapsLock и ScrollLock) по-прежнему будут переключать своё состояние!
Если потребуется вызов клавиш комбинацией Send(), который инициирует HotKeySet(), взамен используйте ControlSend() или отмените HotKeySet(), иначе Send() может инициировать бесконечный цикл.

; Пример
HotKeySet("{Esc}", "captureEsc")
Func captureEsc() ; временная отмена горячей клавиши
    HotKeySet("{Esc}")
    Send("{Esc}")
    HotKeySet("{Esc}", "captureEsc")
EndFunc


Вызываемая функция не может получать параметры. Они будут проигнорированы.

@HotKeyPressed может использоваться внутри функции, чтобы определить горячую клавишу, вызвавшую функцию, если функция вызывается несколькими горячими клавишами.

См. также

Send, GUISetAccelerators

Пример

; Нажимайте Esc, чтобы завершить скрипт, и Pause/Break, чтобы приостановить

Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")
HotKeySet("+!d", "ShowMessage") ; Shift-Alt-d для вызова сообщения

MsgBox(4096, 'Сообщение', 'Нажмите горячую клавишу Pause/Break,' & @CRLF & 'чтобы увидеть как это работает.')

;=== Тело программы должно находится здесь ;===
While 1
    Sleep(100)
WEnd
;===

Func TogglePause()
    $Paused = Not $Paused
    While $Paused
        Sleep(100)
        ToolTip('Скрипт приостановлен')
    WEnd
    ToolTip("")
EndFunc

Func Terminate()
    Exit 0
EndFunc

Func ShowMessage()
    MsgBox(4096, "", "Это сообщение.")
EndFunc