Como quebrar um loop de teclas automáticas quando o aplicativo fecha

Como quebrar um loop de teclas automáticas quando o aplicativo fecha

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

informação relacionada