![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| ShAV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 20.12.2007 Репутация: нет Всего: нет |
Делаю прогу, которая управляет другой: нажимает кнопки, вписывает текст в TEdit. Все через handle делается легко, но один неприятный момент... Если всплывает в управляемом приложении ShowMessage с банальной кнопкой ОК, то остается только вручную нажать, т.к. моя прога останавливается и ждет чего-то... Как это побороть? Handle окна ShowMessage и кнопки ОК известен.
|
|||
|
||||
| ASGDeveloper |
|
|||
|
developer ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 1.4.2006 Репутация: нет Всего: 1 |
||||
|
||||
| ShAV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 20.12.2007 Репутация: нет Всего: нет |
С удовольствим! Но после того как я выполнил действие в управляемом приложении, после которого появилось окно ShowMessage, выполнение управляющей (моей) проги останавливается пока вручную не нажмешь ОК. Словно брекпоинт какой-то. Модальное окно, знаете ли... |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
Вызывай MessageBox с хэндлом окна того приложения и в его треде.
ShowMessage автоматом вызывается для своего приложения. |
|||
|
||||
| ShAV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 20.12.2007 Репутация: нет Всего: нет |
С хэндлом? Так и делаю! А вот что такое в его треде? Поясните, пжлст, уважаемый, на примере. |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 8 Всего: 76 |
хм, как вариант если без внедрение в процесс это например вызывать по таймеру GetForegroundWindow, проверять полученый хандл на принадлежность к главному потоку подопотного процесса и проверять его на класс TMessageForm, ну и если оно - закрывать.
-------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| ASGDeveloper |
|
|||
|
developer ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 1.4.2006 Репутация: нет Всего: 1 |
Тред - это отдельный поток выполнения приложения. Вроде такого:
Параметры функций createthread и sendmessage я приводить не стал. С sendmessage как я понял код у тебя уже есть, а параметры createthread'а я привел почти правильно, просто по хелпу проверь их и подкорректируй. |
|||
|
||||
| ShAV |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 20.12.2007 Репутация: нет Всего: нет |
Все отлично работает, но прежде чем послать sendmessage нужно чтоб предыдущая команда создания потока уже отработала. Т.е. вызвала ShowMessage. Приходится после createthread ставить sleep и подбирать значение для миллисекунд задержки... Иначе SendMessage пошлет значение в никуда. |
||||
|
|||||
| ASGDeveloper |
|
|||
|
developer ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 1.4.2006 Репутация: нет Всего: 1 |
||||
|
||||
| ShAV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 20.12.2007 Репутация: нет Всего: нет |
А как получить хэндл активного элемента управляемого приложения? Хэндл управляемого приложения известен.
По поводу решения проблемы, то онка и решена, и нет. Приходится ждать пока окно диалоговое появится. Поскольку прога не ждет результатов выполнения потока, а идет далее по коду. |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |