![]() |
Как заставить скрипт ожидать отклика программы
Доброго времени суток!
Столкнулся с проблемой: необходимо запустить программу и когда она откроется выполнять с ней действия (например, "открыть файл"). Пока выхожу из ситуации принудительным ожиданием, но это не правильно. На одной машине нужная прога открывается за 20 секунд, а на другой за 50. Хочется, чтобы выполняющийся скрипт мог определить, когда прога ПОЛНОСТЬЮ загрузилась и продолжил следующие действия. Код:
Run("C:\Program Files (x86)\Proga.exe") ; Запустил необходимую прогу Если прога не загружается полностью за 20 сек, то Ctrl+O просто не срабатывает. |
Cem, начните с того, что ответьте себе на вопрос: а как Вы сами определяете этот факт?
|
Объясню ситуацию подробнее:
Запускаю программу "Proga". Появляется процесс "Proga.exe" и открывается окно программы ("Proga_Okno"). Чтобы быть точным, скажу, что визуально открывается только рамка окна. В это же время прога продолжает открываться (загружаться) и некоторое время висит. Только по прошествию некоторого времени, когда прога успешно загрузилась, в ней можно продолжать работать. Если мы проверим исполнения программы через Код:
If WinExists("Proga_Okno") Then ; наличие окна Код:
If ProcessExists("Proga.exe") Then ; наличие выполняемого процесса Теперь вопрос: Как заставить скрипт ожидать до полной загрузки программы (полной работоспособности) и только потом продолжать дальнейшие действия в ней? |
Cem, Вы очень подробно всё описали, кроме главного:
Цитата:
Цитата:
Цитата:
|
Cem, попробуйте использовать WinMenuSelectItem.
Цитата:
|
Спасибо за вариант, но к сожалению, в этом случае не помогает.
Программа называется "Resolume Arena". Когда запускается выглядит так: ![]() это продолжается от 10 до 50 секунд. Время открытия зависит от многих факторов, в частности и от того какой проект был открыт в программе до этого (При повторном открытии прога открывает предыдущий проект, а не "стартует с нуля"). Хотя, возможно тут есть зацепка. Если каким-то образом заставить каждый раз открываться "с нуля". Но сейчас не об этом. После загрузки выглядит так: ![]() Но как видно на изображении, WindowInfo не даёт информации, ни о меню, ни о HotKey. Именно это усложняет всю задачу. |
Цитата:
А как насчёт варианта с «Not Responding» при загрузке приложения? Попробуйте присмотреть что-нибудь из: not responding autoit site:www.autoitscript.com - Поиск в Google — с какого момента приложение подключается к очереди сообщений и готово её обслуживать? |
Кажись придумал, можно высылать комбинацию "Ctrl+O" до тех пор, пока не появится нужное окно.
Код:
$v1 = 0 Очень даже вариант... Минусы: Скрипт делает много лишних операций. Плюсы: Способ действует адекватно и на 100%. |
Проверять раз в секунду цвет пикселя PixelGetColor? Белый (светло-серый) - ждем, темно-серый - загрузилась. Пиксель в районе меню, например, координаты 2х2.
|
DedAlex,
Цитата:
|
Время: 12:15. |
Время: 12:15.
© OSzone.net 2001-