Цикл автозапуска не работает

#autohotkey

#автозапуск

Вопрос:

Мой цикл в моем скрипте autohotkey выполняется только один раз. Кто-нибудь может сказать мне, почему? Спасибо

 Loop, 8 
{
  WinActivate, NDTr
  ControlClick, Button3 ;Select Batch, enter info, start collecting data
  WinWait, Batch Readings
  ControlClick, Edit1
  Send {BS} {BS} {BS} {BS} {BS} {BS}
  Send 1
  ControlClick, Edit2
  Send {BS} {BS} {BS} {BS} {BS} {BS}
  Send 15

  if A_Index = 4
  {
    Sleep, 20000
  }
  else if A_Index = 7
  {
    Sleep, 20000
  }
  else if A_Index = 1
  {
    Sleep, 3000
  }
  else 
  {
    Sleep, 15000
  }

  ControlClick, Button1
  Sleep, 15000
}
  

Комментарии:

1. возможно ли, что вы просто недостаточно долго ждете? эти значения сна кажутся довольно длинными… В качестве альтернативы, правильно ли работает ваш WinWait при втором запуске цикла? Другое окно крадет фокус, так что ваши другие команды отправляются не в то место?

Ответ №1:

WinWait выглядит как вероятный виновник, как сказал anthv123. Дважды проверьте заголовок вашего окна и убедитесь, что он соответствует ожидаемому TitleMatchMode.

Общие методы отладки включают добавление различных всплывающих подсказок в местах кода проблемы. Например, всплывающие подсказки над и под строкой WinWait с текстами «до» и «после» сообщат вам, приостановлено ли оно на неопределенный срок в этой части (если в нем никогда не указано «после»).

Сон в течение 3-20 секунд также не поможет вашему терпению.

Ответ №2:

Попробуйте использовать это для диагностики проблемы. Если «Пакетные чтения» занимают больше 5 секунд, вы получаете сообщение об ошибке, сообщающее вам, и цикл продолжается

 WinWait, Batch Readings,,5
if (errorLevel = 1)
   Msgbox % "Batch Readings timed out"