Что нового

Перезапуск приложения с нажатием клавиши через планировщик

kolesnikovai

Новичок
Сообщения
4
Репутация
0
Версия AutoIt: 3.5.4

Описание: Добый день. Есть приложение, которое требуется периодически перезапускать. Если убивать процесс, то при повторном запуске приложения будет выскакивать ошибка

d105d-clip-4kb.png


При нажатии на Enter, ошибка исчезает и приложение запускается.

Я пробовал реализовать перезапуск скриптом
Код:
ProcessClose("AFTN.exe")
Run("C:\WINAFTN\AFTN.exe")
WinWaitActive("Предупреждение!")
WinActivate("Предупреждение!")
Send("{ENTER}")


Если запускать непосредственно скрипт, то он отрабатывает корректно (даже без команды "WinActivate").
Если запускать скрипт через планировщик (Win2008r2), то окно с ошибкой не становится активным, в итоге не отрабатывает Send и приложение не запускается.

Примечания: При этом перезапуск приложения на сервере нужно б перезапускать когда пользователь по RDP к серверу не подключен.
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Попробуйте
Код:
ControlSend (  )
;или 
ControlClick("Моё окно", "", "[CLASS:Button; TEXT:Finish; INSTANCE:2]")
 
A

Alofa

Гость
Реализуйте свой "планировщик" непосредственно в скрипте или лучше попробуйте узнать что недостает приложению при запуске и устраняйте это "что-то" перед тем как сделать Run().
 
Автор
K

kolesnikovai

Новичок
Сообщения
4
Репутация
0
ra4o сказал(а):
Попробуйте
Код:
ControlSend (  )
;или 
ControlClick("Моё окно", "", "[CLASS:Button; TEXT:Finish; INSTANCE:2]")
Пробовал
1
Код:
ProcessClose("AFTN.exe")
Run("C:\WINAFTN\AFTN.exe")
ControlSend("Предупреждение!","","[CLASS:Static; INSTANCE:2]","{ENTER}")

2
Код:
ProcessClose("AFTN.exe")
Run("C:\WINAFTN\AFTN.exe")
ControlClick("Предупреждение!", "", "[CLASS:Button; TEXT:Finish; INSTANCE:2]")


В обоих случаях при запуске непосредственно скрипта (без планировщика) закрытие окна ошибки не отработало. :(
 
Автор
K

kolesnikovai

Новичок
Сообщения
4
Репутация
0
да,моя ошибка
с au3info выяснил
Код:
ProcessClose("AFTN.exe")
Run("C:\WINAFTN\AFTN.exe")
ControlClick("Предупреждение!", "", "[CLASS:Button; TEXT:OK; INSTANCE:1]")

правда результат тот же - окно ошибки не пропадает
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Некоторые элементы противодействуют нажатию на них мышью, если окно не активно. Используйте функцию WinActivate(), чтобы сделать окно активным, перед использованием ControlClick().
 
Автор
K

kolesnikovai

Новичок
Сообщения
4
Репутация
0
Код:
ProcessClose("AFTN.exe")
Run("C:\WINAFTN\AFTN.exe")
WinActivate("Предупреждение!")
Sleep(1000)
ControlSend("Предупреждение!","Предыдущий сеанс работы с программой не был нормально завершен. Возможна потеря данных!","[CLASS:Static; INSTANCE:2]","{ENTER}")

в комплекте с "Выполнять только для зарегистрированного пользователя" отработало корректно. выставил расписание - будем смотреть.
 
Верх