我有一个很长的 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 具有压倒一切的优先级……
编辑:有趣的是,如果我手动单击托盘图标并单击暂停脚本,我的 ^#i 将继续执行,只有手动“退出脚本”有效......
答案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
答案2
[经过多次挫折后]
所有新脚本的顶部都有此内容:
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
此命令会阻止SetKeyDelay
,因此我将其注释掉。但这会禁用所有Exitapp, suspend, reload
,等等...
我重新启用后SendMode Input
,互联网上的所有建议都有效。只是我SetKeyDelay
又没有了……