Cómo romper un bucle de autohotkey cuando se cierra la aplicación

Cómo romper un bucle de autohotkey cuando se cierra la aplicación

Tengo una tecla de acceso automático para ingresar algunas pulsaciones de teclas repetidamente en un script antiguo. No sé de antemano cuánto tiempo durará, así que tengo este script:

#NoEnv
^m::

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

Esc::
BreakLoop = 1
return

Y espero a que termine y entro en escape cuando termina (el temporizador de apagado está ahí para que pueda escapar).

Tan pronto como finaliza el script, la ventana se cierra y me gustaría usar ese evento para romper el bucle de autohotkey, pero aún no he descubierto cómo.

Respuesta1

Puede utilizar WinActive o WinExist para comprobar el cierre de la ventana. También puede utilizar una declaración while para combinar las declaraciones de interrupción condicionales en lugar de necesitar una declaración if/break separada. También me aseguraría de inicializar la variable BreakLoop en caso de que ejecute el script varias veces sin reiniciarlo por completo.

#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

información relacionada