![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
ВладимирЖуков |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 22.5.2006 Репутация: нет Всего: нет |
При запуске внешней программы процесс пошел, а окно еще не создалось и когда я пишу FindWindow(...), то оно не может найтись так как еще не создано. Я пробовал Sleep после запуска, но это не выход. Мне нужен Handle запускаемого окна. Подскажите, как это сделать?
|
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
Крути цикл с FindWindow, пока не найдется.
|
|||
|
||||
Nickel |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 7.2.2006 Репутация: 2 Всего: 4 |
|
|||
|
||||
ВладимирЖуков |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 22.5.2006 Репутация: нет Всего: нет |
Спасибо! Я подобное уже сделал. Но мне это как то не нравится, потомучто поиск окна происходит по заголовку или по классу. А можно какнибудь получить handle незная ни класса, ни заголовка. Имеется имя файла (запускаемой программы).
Может какнибудь через процессы или еще как-нибудь? Пожалуйста с кодом! |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
GetModuleHandle+EnumThreadWindows
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Yanis |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 13 Всего: 111 |
И не дай бог чужая программа не запустится ![]() |
||||
|
|||||
BUGOR |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 2 Всего: 16 |
В таблице открытых хендлов системы до того как окно не создано никаких записей об этом окне тоже не создано, поэтому пока окно не создано, то как ты его хендл-то узнаешь? Задача unreal)
|
|||
|
||||
Nickel |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 7.2.2006 Репутация: 2 Всего: 4 |
А почему бы не подождать пока они не появятся?
Ну что, я всё должен чтоли предусматривать? ![]()
Пожалуйста:
Зацикли FindWindowByExeName по аналогии с FindWindow. Если есть вероятность, что программа может не запуститься, то, во-первых, проверь что возвратил WinExec (если используешь его), если значение больше 31, то всё окей, иначе - ошибка. Во-вторых, ограничь по времени поиск окна, ну например секунд 5 (сгодится даже TTimer с закладки System). |
||||||||
|
|||||||||
аЛексус |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 20.3.2006 Где: Алматы Репутация: нет Всего: 1 |
Что-то не выходит!!! :-(
Может еще что-то есть?! |
|||
|
||||
Nickel |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 7.2.2006 Репутация: 2 Всего: 4 |
А что не выходит? Каков результат? Как делаешь?
|
|||
|
||||
аЛексус |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 20.3.2006 Где: Алматы Репутация: нет Всего: 1 |
Интерфейс второй программы, то встраивается то не встраивается.
1. Интерфейс визуально не встраивается(выходит за рамки окна), хотя относится к окну главной программы. и при этом в панели задач нет кнопки для второй программы, хотя окно есть. 2. Интерфейс втраивается и в панели задач появляется кнопка. Вот код проги:
|
|||
|
||||
Nickel |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 7.2.2006 Репутация: 2 Всего: 4 |
Понятно, мой код не очень надёжный, поскольку ищет первое попавшееся окошко данного процесса, а у процесса может быть много всяких невидимых окошек, поэтому нужно как минимум отфильтровать в функции FindWindowByExeName невидимые окошки, окошки с нулевым размером и, наверно показанные за пределом экрана (можно ещё ввести ограничения по стилям типа WS_POPUP...).
|
|||
|
||||
Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 6 Всего: 50 |
-------------------- |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |