古いスクリプトにキーストロークを繰り返し入力するための自動ホットキーがあります。どのくらい長く続くかは事前にわからないので、次のスクリプトを用意しました。
#NoEnv
^m::
Loop
{
if (BreakLoop = 1)
break
SEND, 3
SEND, {Enter}
SEND, {Enter}
SEND, {Enter}
SEND, {Enter}
sleep, 100
}
Esc::
BreakLoop = 1
return
そして、それが完了するのを待ち、終了したらエスケープを入力します (スリープ タイマーは、実際にエスケープできるようにするためにあります)。
スクリプトが終了するとすぐにウィンドウが閉じるので、そのイベントを使用して autohotkey ループを終了したいのですが、まだ方法がわかりません。
答え1
WinActive または WinExist を使用して、ウィンドウが閉じているかどうかを確認できます。また、個別の if/break を使用する代わりに、while ステートメントを使用して条件付き 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