1

У меня длинный AHK-скрипт с множеством простых {tab} и {down} т.д.

Если что-то пойдет не так, мне нужно прекратить работу сценария. Погуглил, нашел много ответов, в основном говоря:

положить esc::ExitApp в конце скрипта

Это просто не работает для меня ... Код:

^#i::

SetKeyDelay, 1000   ; set to see if the rapid key execution was preventing the esc::exitapp to work, but makes no difference.

send, !f {Right}{enter}
send, {TAB 3} {Down 20} 

; lots more {tab}'s and {enter}'s

Return   ; I remember to put it

Esc::ExitApp

Запускаю скрипт, тестирую Esc - все работает.

Я нажимаю ^ # i, выполнение начинается, и Esc больше не работает, как если бы ^ # у меня был приоритет ...

РЕДАКТИРОВАТЬ: интересно то, что если я вручную нажимаю на иконку в трее и нажимаю скрипт паузы, мой ^ # i продолжает выполняться, работает только ручной "скрипт выхода" ...

2 ответа2

1

[после большого разочарования]

Все новые скрипты идут с этим вверху:

 SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.

Эта команда предотвращает SetKeyDelay , поэтому я закомментировал это. НО это затем отключает все Exitapp, suspend, reload и т. Д ...

Я SendMode Input и все предложения из интернета. За исключением того, что я снова остался без SetKeyDelay ...

1

Я не совсем уверен, что является причиной вашей проблемы, так как я не могу воспроизвести это на моей машине. Но вы можете попробовать использовать SetTimer вместо этого с вашей горячей клавишей .

Это может позволить вам обойти любое блокирующее поведение.

; Bind the keybind to SetTimer
^#i::SetTimer, MySub, -1

; Declare the subroutine the timer triggers
MySub:
    ; Execute more code here...
    ; ...
    ; ...
return

Esc::ExitApp

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .