Цикл автогорячих клавиш не работает

Мой цикл в моем скрипте 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
}

person anthv123    schedule 06.10.2011    source источник
comment
может вы просто не дождались? эти значения Sleep кажутся довольно длинными ... В качестве альтернативы, ваш WinWait работает правильно при втором прогоне цикла? Не перехватывает ли фокус другое окно, так что другие ваши команды отправляются не туда?   -  person andrewdotnich    schedule 10.10.2011


Ответы (2)


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

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

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

person infogulch    schedule 21.10.2011

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

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