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


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

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


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

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


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


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