|
|
|
Управление другим приложением
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, если кто сталкивался с проблемой то подскажите пожалуйста .... Есть програма A, работой которой нужно управлять с помощью другой программы B. По выполнению некоторых условий програма В выполняет поиск окна программы А ( FindWindow ), таходит нужный хендл елемента, кликает на нем, ловит появившееся окно, заполняет окна ввода, опять кликает. Все реализовано и в дебаге с искуственными задержками выполняется на ура, но ... при реальной работе не всегда попап окно получает команды которые ему предназначены, а вместо него их обрабатывает родительское. Проблема насколько я понимаю в том что окно открывается, находится управляющим приложением, но не успевает регистрировать процедуру обработки сообщений и команды пересылаются родителю. Пробовал использовать и SendMessage, и PostMessage и SendMessageTimeout, все равно без исскуственных пауз работает плохо, большой процент несрабатывания. Подскажите плиз кто может ЧТО делать? КАК проверить что хендл окна готов к приему команд и будет их обрабатывать ? КАК гарантировать что меседж попадет именно тому окну хендл которого передается и не попадет родителю. Варианты вроде поставить получасовые задержки не предлагать :-) Заранее спасибо ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 20:39 |
|
||
|
Управление другим приложением
|
|||
|---|---|---|---|
|
#18+
bn... Проблема насколько я понимаю в том что окно открывается, находится управляющим приложением, но не успевает регистрировать процедуру обработки сообщений и команды пересылаются родителю. Такого вообще никогда не может быть. bn Пробовал использовать и SendMessage, и PostMessage и SendMessageTimeout, все равно без исскуственных пауз работает плохо, большой процент несрабатывания. Надо использовать PostMessage. И WaitForInputIdle. И не забывать, что ты посылаешь сообщение окну, работающему в другом потоке и даже процессе. Т.е. все сообщения обрабатываются асинхронно. bn попадет именно тому окну хендл которого передается и не попадет родителю. Такого не может быть. Если ты указал правильно хэндл, то это окно обработает сообщение, если оно его вообще обрабатывает. Иначе (если хэндл указан неправильно) его не обработает никто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 23:52 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=372&tid=2031972]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 383ms |

| 0 / 0 |
