AHK if оператор - запустить инструкцию на основе нажатой комбинации клавиш - PullRequest
0 голосов
/ 25 апреля 2020

Есть ли способ объединить приведенные ниже общие инструкции в один набор кода? т. е. если нажата ctrl-m, введите минуты или, если нажата ctrl-s, введите секунды.

Буду признателен за помощь.

^m::
WinActivate menu
Click, 100, 50
sleep 200
Send minutes; typing into input field
sleep 200
Click, 100, 100; clicking button opens application called minutes
return

^s::
WinActivate menu
Click, 100, 50
sleep 200
Send seconds; typing into input field
sleep 200
Click, 100, 100; clicking button opens application called seconds
return

1 Ответ

1 голос
/ 25 апреля 2020

Вы можете определить несколько различных горячих клавиш для запуска одного и того же блока кода, а затем вы можете определить, какая горячая клавиша была использована, отметив A_ThisHotkey.

^m::
^s::
    if(A_ThisHotkey = "^m")
        variable := "minutes"
    else
        variable := "seconds"
    WinActivate, menu
    Click, 100, 50
    Sleep, 200
    SendInput, % variable ;typing into input field
    Sleep, 200
    Click, 100, 100 ;clicking button opens application called minutes
return

Обратите внимание, что мы проверяем значение A_ThisHotkey как можно скорее, поэтому мы обязательно получим значение правильной горячей клавиши, а не какой-либо другой горячей клавиши, которая могла бы прервать текущий поток (как рекомендовано в документации).
Также переключено на SendInput, потому что это быстрее и надежнее.


В качестве бонуса, если вы хотите более компактный код, замените оператор if-else на троичный:

variable := A_ThisHotkey = "^m" ? "minutes" : "seconds"
...