アプリが閉じたときにオートホットキーのループを中断する方法

アプリが閉じたときにオートホットキーのループを中断する方法

古いスクリプトにキーストロークを繰り返し入力するための自動ホットキーがあります。どのくらい長く続くかは事前にわからないので、次のスクリプトを用意しました。

#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

関連情報