![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: нет Всего: 12 |
Всем привет
Задача: Просмотреть все окна, принадлежащие ТОЛЬКО ЧТО открытому мной, с помощью CreateProcess, приложению Internet Explorer. Как бы страшно не звучало, на коде думаю будет проще
Проще говоря, нужно запустить ишака и прочитать заголовки его окон первого и второго уровня... ПРОБЛЕМА НЕ В ПРОГРАММЕ!!!! Код я привел для того, чтобы было проще понять, чего хочу, проблема в самом ишаке... Проблема: код моей программы отработает только в том случае, если в системе еще не запущены приложения internet explorer (8 версия, вроде). Если в системе ранее уже запущен ишак, то мне после CreateProcess в processId и threadId уже вернется непонятно что, значения, но эти значения не актуальны для моей задачи, идентификатора процесса такого я не вижу в диспетчере задач, но самое печальное, что EnumThreadWindows уже не отрабатывает. Я не буду спрашивать, что не так в моем коде, а хочу узнать, есть ли возможность поймать окно Internet Explorer запущенное непосредственно мной после вызова функции CreateProcess? Спасибо ЗЫ: способ искать все окна в системе по идентификатору исключаю, хочется более быстрого решения |
|||
|
||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Реализуется это очень просто - при старте IE проверяет, что он уже запущен, и если да - до устанавливает соединение с уже запущенной копией и передает ей URL для открытия, после чего сам завершается. Т.ч. ProcessID, который возвращает CreateProcess соотвествует процессу, который практически немедленно завершается.
![]() |
||||
|
|||||
null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: нет Всего: 12 |
Жаль, спасибо большое
Добавлено через 2 минуты и 14 секунд Хотя можно попробовать в таком случае найти среди процессов ишак, извлечь идентификатор и пробежаться по его окнам, может прокатит Добавлено через 5 минут и 16 секунд думаю, это будет быстрее, чем просматривать все окна в системе |
|||
|
||||
null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: нет Всего: 12 |
xvr
Интересный факт я нашел.... Если порождать процессы ишака в невидимом режиме (wShowWindow = SW_HIDE;), то тогда ишак порождает "реально новые" процессы при чем постоянно новые, то есть значения ProcessId актуален, так же как и хендл Как думаешь это надежный факт запуска с сохранением идентификатора процесса или это версионная привязка? |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
||||
|
||||
null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: нет Всего: 12 |
Мне как раз скрытый нужен. Зачем мне отображать окна, если могу ему отправить сообщения на обновление и закрытие.
Задача вообще такая: запусить ишака (желательно в скрытом режиме), найти окно по заголовку, который мне известен, так как я скармливаю при запуске ишаку файл. Далее ищу окно и периодически его обновляю, в конце его закрываю Так что думаешь в других версиях ишака надеяться на то, что этим способом я сохраню себе идентификатор процесса после CreateProcess не стоит? |
|||
|
||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
![]()
|
||||
|
|||||
null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: нет Всего: 12 |
низя (
да, скорее всего надеятся на "фичу" не стоит... а можно ли зная HWND окна проверить существует ли оно действительно в системе? |
|||
|
||||
null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: нет Всего: 12 |
скорее всего postMessage вернет FALSE, ладно, буду пробовать
xvr, спасибо тебе за помощь |
|||
|
||||
GremlinProg |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||
|
|||||
null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: нет Всего: 12 |
пасибо
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |