Eu tenho uma tecla automática para inserir algumas teclas repetidamente em um script antigo. Não sei de antemão quanto tempo isso vai durar, então tenho 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
E espero que termine e entro em escape quando terminar (o temporizador está lá para que eu possa realmente escapar).
Assim que o script for concluído, a janela será fechada e eu gostaria de usar esse evento para interromper o loop do autohotkey, mas ainda não descobri como.
Responder1
Você pode usar WinActive ou WinExist para verificar o fechamento da janela. Você também pode usar uma instrução while para combinar as instruções de interrupção condicional em vez de precisar de um if/break separado. Eu também certificaria e inicializaria a variável BreakLoop caso você executasse o script várias vezes sem reiniciá-lo totalmente.
#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