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


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.