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