![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как заставить скрипт ожидать отклика программы |
|
[решено] Как заставить скрипт ожидать отклика программы
|
![]() Новый участник Сообщения: 27 |
Доброго времени суток!
Столкнулся с проблемой: необходимо запустить программу и когда она откроется выполнять с ней действия (например, "открыть файл"). Пока выхожу из ситуации принудительным ожиданием, но это не правильно. На одной машине нужная прога открывается за 20 секунд, а на другой за 50. Хочется, чтобы выполняющийся скрипт мог определить, когда прога ПОЛНОСТЬЮ загрузилась и продолжил следующие действия. Run("C:\Program Files (x86)\Proga.exe") ; Запустил необходимую прогу Sleep(20000) ; Принудительно жду 20 секунд пока прога загрузится (иногда нужно 50 сек) If WinExists("Proga_Okno") Then ; Проверяю наличие окна программы WinActivate("Proga_Okno") ; и активирую его, WinWaitActive("Proga_Okno") ; жду, когда активируется (на случай подвисания машины) Sleep(1000) Send("^o") ; Выполняю дальнейшие действия: Ctrl+O - Открыть файл WinWait("Proga_File") Если прога не загружается полностью за 20 сек, то Ctrl+O просто не срабатывает. |
|
Отправлено: 03:38, 09-02-2014 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Cem, начните с того, что ответьте себе на вопрос: а как Вы сами определяете этот факт?
|
Отправлено: 03:48, 09-02-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Объясню ситуацию подробнее:
Запускаю программу "Proga". Появляется процесс "Proga.exe" и открывается окно программы ("Proga_Okno"). Чтобы быть точным, скажу, что визуально открывается только рамка окна. В это же время прога продолжает открываться (загружаться) и некоторое время висит. Только по прошествию некоторого времени, когда прога успешно загрузилась, в ней можно продолжать работать. Если мы проверим исполнения программы через либо то и окно, и процесс присутствуют с первой секунды после запуска, скрипт считает, что всё нормально (условие выполняется) и продолжает работу. Но пока программа "Proga.exe" не загрузится полностью, любые манипуляции в её окне бесполезны (будь то "Ctrl+O" или "Ctrl+А"). Теперь вопрос: Как заставить скрипт ожидать до полной загрузки программы (полной работоспособности) и только потом продолжать дальнейшие действия в ней? |
Последний раз редактировалось Cem, 09-02-2014 в 12:52. Отправлено: 12:45, 09-02-2014 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 14:42, 09-02-2014 | #4 |
Вредитель Сообщения: 460
|
Профиль | Отправить PM | Цитировать Cem, попробуйте использовать WinMenuSelectItem.
Цитата:
|
||
------- Отправлено: 15:17, 09-02-2014 | #5 |
![]() Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Спасибо за вариант, но к сожалению, в этом случае не помогает.
Программа называется "Resolume Arena". Когда запускается выглядит так: ![]() это продолжается от 10 до 50 секунд. Время открытия зависит от многих факторов, в частности и от того какой проект был открыт в программе до этого (При повторном открытии прога открывает предыдущий проект, а не "стартует с нуля"). Хотя, возможно тут есть зацепка. Если каким-то образом заставить каждый раз открываться "с нуля". Но сейчас не об этом. После загрузки выглядит так: ![]() Но как видно на изображении, WindowInfo не даёт информации, ни о меню, ни о HotKey. Именно это усложняет всю задачу. |
Отправлено: 15:55, 09-02-2014 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Cem:
А как насчёт варианта с «Not Responding» при загрузке приложения? Попробуйте присмотреть что-нибудь из: not responding autoit site:www.autoitscript.com - Поиск в Google — с какого момента приложение подключается к очереди сообщений и готово её обслуживать? |
|
Отправлено: 16:15, 09-02-2014 | #7 |
![]() Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Кажись придумал, можно высылать комбинацию "Ctrl+O" до тех пор, пока не появится нужное окно.
Каждую секунду высылает нажатие CTRL+о, до тех пор, пока не появится окно "Open". Очень даже вариант... Минусы: Скрипт делает много лишних операций. Плюсы: Способ действует адекватно и на 100%. |
Последний раз редактировалось Cem, 20-02-2014 в 11:19. Отправлено: 16:16, 09-02-2014 | #8 |
Вредитель Сообщения: 460
|
Профиль | Отправить PM | Цитировать Проверять раз в секунду цвет пикселя PixelGetColor? Белый (светло-серый) - ждем, темно-серый - загрузилась. Пиксель в районе меню, например, координаты 2х2.
|
------- Отправлено: 16:23, 09-02-2014 | #9 |
![]() Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать DedAlex,
Цитата DedAlex:
|
|
Отправлено: 11:24, 20-02-2014 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Заставить скрипт расставлять по шаблону | McLotos | AutoIt | 8 | 02-04-2012 21:57 | |
Как заставить скрипт от Sanja Alone (oeminfo.cmd) видеть обновы с 9-тизначным номером | JohnnyD | Автоматическая установка Windows 2000/XP/2003 | 0 | 21-02-2011 12:03 | |
Установка - Можно ли заставить работать программы из папки Windows.old | 42rus | Microsoft Windows 7 | 4 | 26-06-2009 17:11 | |
Dial-Up - как заставить программы работать через два различных соединения с интернет | veschiy | Сетевые технологии | 4 | 01-09-2008 09:16 | |
putty как заставить крон запускать скрипт в назначенное время? | Вебмастеру | 3 | 30-09-2005 14:46 |
|