#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"