Проблема - скрипт работает, когда ему хочется. Msgbox показывается иногда(!), и то только когда окно активно и в нем выполняются какие-то действия. Если окно после отсчета времени свернуто или неактивно, скрипт не работает и не показывает Msgbox. Хотя он должен его развернуть и показать Msgbox. Как это исправить?
Окно, в котором скрипт должен отслеживать наличие/отсутствие кнопки. появляется не так часто, раз в 2-3 минуты, и кнопка в нем пропадает не сразу, т.е. у скрипта есть возможность отследить момент его появления и найти/не найти кнопку.
Code: Select all
#SingleInstance, force
#NoEnv
ProgramName := "Program1"
Loop
{
WinWait, % "Диалоговая форма ahk_class WindowsForms10.Window.8.app.0.329445b_r8_ad1",, 5 ; ждем появление окна
if !ErrorLevel
{
ControlGet, OutputVar, Visible,, WindowsForms10.Window.8.app.0.329445b_r8_ad184 ; проверяем наличие кнопки в окне
if (OutputVar) ; если кнопка в данном окне обнаружена
Continue ;продолжаем проверку
else ; если кнопки в данном окне не обнаружено
{
Sleep, 5000 ; ждем 5 секунд
IfWinExist, % "Диалоговая форма ahk_class WindowsForms10.Window.8.app.0.329445b_r8_ad1" ; если это окно все еще существует
{
IfWinNotActive, % "Диалоговая форма ahk_class WindowsForms10.Window.8.app.0.329445b_r8_ad1" ; и оно неактивно
{
ControlGet, OutputVar, Visible,, WindowsForms10.Window.8.app.0.329445b_r8_ad184 ; проверяем наличие кнопки в нем еще раз
if (OutputVar)
Continue
else ; если кнопки в данном окне снова не обнаружено
{
WinActivate ; делаем окно активным
MsgBox, 262160, % "Program1", % "Готово" ; и показываем MsgBox
}
}
Else ; если это окно все еще существует, и оно активно
MsgBox, 262160, % "Program1", % "Готово" ; показываем MsgBox
}
Else ; если окно не существует, продолжаем проверку
Continue
}
}
else
Continue ; если окно не появилось, начинаем проверку сначала
}