Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Управление другим приложением / 3 сообщений из 3, страница 1 из 1
08.02.2006, 20:39
    #33532581
bn
bn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление другим приложением
Здравствуйте,
если кто сталкивался с проблемой то подскажите пожалуйста ....
Есть програма A, работой которой нужно управлять с помощью другой программы B. По выполнению некоторых условий програма В выполняет поиск окна программы А ( FindWindow ), таходит нужный хендл елемента, кликает на нем, ловит появившееся окно, заполняет окна ввода, опять кликает. Все реализовано и в дебаге с искуственными задержками выполняется на ура, но ... при реальной работе не всегда попап окно получает команды которые ему предназначены, а вместо него их обрабатывает родительское. Проблема насколько я понимаю в том что окно открывается, находится управляющим приложением, но не успевает регистрировать процедуру обработки сообщений и команды пересылаются родителю. Пробовал использовать и SendMessage, и PostMessage и SendMessageTimeout, все равно без исскуственных пауз работает плохо, большой процент несрабатывания.
Подскажите плиз кто может ЧТО делать? КАК проверить что хендл окна готов к приему команд и будет их обрабатывать ? КАК гарантировать что меседж попадет именно тому окну хендл которого передается и не попадет родителю.
Варианты вроде поставить получасовые задержки не предлагать :-)
Заранее спасибо !
...
Рейтинг: 0 / 0
08.02.2006, 23:52
    #33532733
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление другим приложением
bn... Проблема насколько я понимаю в том что окно открывается, находится управляющим приложением, но не успевает регистрировать процедуру обработки сообщений и команды пересылаются родителю.


Такого вообще никогда не может быть.

bn
Пробовал использовать и SendMessage, и PostMessage и SendMessageTimeout, все равно без исскуственных пауз работает плохо, большой процент несрабатывания.


Надо использовать PostMessage. И WaitForInputIdle.
И не забывать, что ты посылаешь сообщение окну, работающему в другом потоке и даже процессе. Т.е. все сообщения обрабатываются асинхронно.

bn
попадет именно тому окну хендл которого передается и не попадет родителю.


Такого не может быть. Если ты указал правильно хэндл, то это окно обработает сообщение, если оно его вообще обрабатывает. Иначе (если хэндл указан неправильно) его не обработает никто.
...
Рейтинг: 0 / 0
09.02.2006, 17:34
    #33535111
bn
bn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление другим приложением
Насчет быть не может - я согласен что это нелогично и в это трудно поверить, но это и к моему удивлению именно так.
А за WaitForInputIdle - спасибо !!! Думаю это как раз та проверка которая мне и нужна.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Управление другим приложением / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]