我有一个自动热键,用于将一些按键重复输入到旧脚本中。我事先不知道它会持续多长时间,所以我有这个脚本:
#NoEnv
^m::
Loop
{
if (BreakLoop = 1)
break
SEND, 3
SEND, {Enter}
SEND, {Enter}
SEND, {Enter}
SEND, {Enter}
sleep, 100
}
Esc::
BreakLoop = 1
return
我等待它完成,并在它完成时进入逃脱状态(有睡眠计时器,所以我可以真正逃脱)。
脚本完成后窗口就会关闭,我想使用该事件来中断自动热键循环,但还没有弄清楚如何操作。
答案1
您可以使用 WinActive 或 WinExist 检查窗口是否关闭。您还可以使用 while 语句来组合条件 break 语句,而不需要单独的 if/break。我还会确保初始化 BreakLoop 变量,以防您多次运行脚本而不完全重新启动它。
#NoEnv
^m::
setTitleMatchMode, 2 ; inexact title match
myID := WinExist(myWinTitle:="A") ; put WinSpy title details here
BreakLoop = 0
While !BreakLoop and WinActive("ahk_id" myID)
{
SEND, 3
SEND, {Enter}
SEND, {Enter}
SEND, {Enter}
SEND, {Enter}
sleep, 100
}
Esc::
BreakLoop = 1
return