如何在應用程式關閉時打破自動熱鍵循環

如何在應用程式關閉時打破自動熱鍵循環

我有一個自動熱鍵,可以在舊腳本中重複輸入一些按鍵。我事先不知道它會持續多久,所以我有這個腳本:

#NoEnv
^m::

Loop 
{
if (BreakLoop = 1)
  break 
  SEND, 3
  SEND, {Enter}
  SEND, {Enter}
  SEND, {Enter}
  SEND, {Enter}
  sleep, 100
}

Esc::
BreakLoop = 1
return

我等待它完成,並在完成時輸入 escape(睡眠計時器在那裡,所以我實際上可以逃脫)。

腳本完成後,視窗就會關閉,我想使用該事件來打破自動熱鍵循環,但目前還沒有弄清楚如何做。

答案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

相關內容