![]() |
Как дождаться РЕАЛЬНОГО появления окна
Здравствуйте!
Как дождаться РЕАЛЬНОГО появления окна, т.е. - его полной отрисовки? Дело в том, что мне нужно поочерёдно открыть несколько окон, очерёдность эта строгая, т.е. на панели задач Windows окна должны располагаться в указанной последовательности. Но одно из окон (приложение) может долго загружаться, в итоге - AutoIt видит окно всеми возможными функциями (я все проверки уже перепробовал) и передаёт управление на запуск следующего окна (приложения), которое запускается гораздо быстрее и становится на панели задач первым, т.к. первое окно хоть и появилось для AutoIt, но реально не отрисовалось! Паузы использовать не вариант, т.к. окно может запускаться и 2 и 3 и 10 секунд, в зависимости от загруженности системы и прочих составляющих. ЗЫ: Не смог этот недостаток автоматизаторов побороть в nnCron, теперь не могу и в AutoIt (а он мне значительно больше нравится). Спасибо. |
Попробуй
Код:
WinWaitNotActive |
К сожалению, это тоже не работает :(
|
Пример ожидания окна в панели задач:
Код:
#include <GUIToolbar.au3> |
Вариант по проще, но не очень надёжный (в случае если на панели задач будут похожие по названию окна)...
Код:
#include <GUIToolbar.au3> |
Цитата:
Странно, что такой весь из себя универсальный AutoIt не содержит специальных функций для лёгкого отслеживания реальных открытий окон (их полной отрисовки на экране), ведь архиполезная возможность, паузы (т.е. - пальцем в небо) тогда вообще не нужны во многих ситуациях! И ещё 2 вопроса по теме... 1: Во многих оконных функциях AutoIt нельзя использовать в качестве заголовка отрывок текста, ведь заголовок может быть всегда разным, но, в тоже время, всегда с одной и той же припиской (например: Google - Mozilla Firefox или Яндекс - Mozilla Firefox). Есть какая-то лёгкая возможность обходить этот недостаток (к примеру - шаблон, типа: *Mozilla Firefox)? Или спасёт только [CLASS:MozillaWindowClass]? Но последнее не работает в твоём коде, Creat0R, только полный и точный заголовок окна. 2: Есть сторонние утилиты, которые располагают кнопки (запущенные приложения) на панели задач в нужной последовательности, т.е. Windows это позволяет. Вероятно, что и через AutoIt это можно как-то сделать. Быть может это будет проще, нежели использовать огромный код от Creat0R? Ведь это тоже решение проблемы, хоть и не такое правильное, как хотелось бы изначально. Спасибо. |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
NewOLDi, Вы бы привели свой код, а то я что-то подозреваю, что дело не в AutoIt, а в особенностях конкретного приложения и в Вашем коде.
|
Прошу прощения за длительное отсутствие...
Я всё-таки сам нашёл ПРОСТОЕ и ТОЧНОЕ решение по сабжу, ибо код от Creat0R слишком уж сильно выходит за все мыслимые пределы для такой элементарной задачи. Итак, если нужно дождаться РЕАЛЬНОГО появления окна (РЕАЛЬНОЙ отрисовки окна) - использовать нужно следующий код: Код:
While NOT BitAND ( WinGetState ( 'title' ), 2 ) Да, кстати... Благодарю за AutoItSetOption ( 'option', param ). Полезная фича, не знал :) Спасибо! |
Цитата:
Если вам нужно было вот такое простое решение, то и задачу нужно было по проще отрисовывать! |
Цитата:
Про панель задач - это чтобы задача была ясна наверняка (на все 200%).. |
|
Всем здравствуйте.
Скажите, пожалуйста, а как дождаться появления, полной загрузки рабочего стола (признаки полной загрузки рабочего стола для меня - это появление на рабочем столе значков, отображение панели задач, отображение часов в панели задач и т.д.) То есть мне что требуется - если загружен рабочи стол - то выполняем комманды Команда 1 Команда 2 Команда 3 ... Если не загружен рабочий стол - то пауза, ждем, когда будет загружен рабочий стол, тогда и будем выполнять комманды |
Время: 09:19. |
Время: 09:19.
© OSzone.net 2001-