应用程序关闭时如何打破自动热键循环

应用程序关闭时如何打破自动热键循环

我有一个自动热键,用于将一些按键重复输入到旧脚本中。我事先不知道它会持续多长时间,所以我有这个脚本:

#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

相关内容