앱이 닫힐 때 자동 핫키 루프를 끊는 방법

앱이 닫힐 때 자동 핫키 루프를 끊는 방법

이전 스크립트에 일부 키 입력을 반복적으로 입력하는 자동 단축키가 있습니다. 얼마나 오래 지속될지 미리 알 수 없으므로 다음 스크립트가 있습니다.

#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를 사용하여 창이 닫히는지 확인할 수 있습니다. 별도의 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

관련 정보