1

У меня есть автоглючка для многократного нажатия клавиш в старом скрипте. Я не знаю заранее, как долго это будет продолжаться, поэтому у меня есть этот сценарий:

#NoEnv
^m::

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

Esc::
BreakLoop = 1
return

И я жду, пока он закончится, и введите escape, когда он закончится (таймер сна есть, чтобы я мог на самом деле убежать).

Как только скрипт завершится, окно закроется, и я хотел бы использовать это событие, чтобы разорвать цикл autohotkey, но пока не выяснил, как это сделать.

1 ответ1

1

Вы можете использовать WinActive или WinExist для проверки закрытия окна. Вы также можете использовать оператор while для объединения операторов условного прерывания вместо необходимости использовать отдельный if/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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .