Як перервати цикл автоматичної клавіші, коли програма закривається


1

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

#NoEnv
^m::

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

Esc::
BreakLoop = 1
return

І я чекаю, коли він закінчиться, і входжу втечу, коли він закінчиться (таймер сну є, щоб я міг фактично втекти).

Щойно сценарій закінчується, вікно закривається, і я хотів би використати цю подію для розриву циклу автоматичної клавіші, але ще не зрозумів, як це робити.

Відповіді:


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

Я намагаюся використовувати код, я вважав, що використання активного вікна буде тим, що я хотів, але тоді сценарій не запускався. Я щось пропускаю? Я хотів би запустити скрипт, поки активне вікно не закриється, я використав приклад зразка вище та замінив "title ahk_exe my.exe" на "A". Дякую, що розібралися зі мною :).
— Джохан

Видаліть оператор not перед логічною помилкою WinActive ... Ви хочете, щоб цикл працював під час активного вікна. Однак ви не можете використовувати A для вікна, якщо спочатку ви не прочитали ідентифікатор. Інакше цикл завжди знайде активне вікно, це буде просто інше вікно.
— JJohnston2

Оновлений блок коду вище, щоб відобразити зміни, зазначив мій попередній коментар. Це буде читати активне вікно і перевіряти це вікно, поки воно більше не буде активним.
— JJohnston2
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.