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