Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2009, 13:47   #1
Cleric57
 
Регистрация: 17.02.2009
Сообщений: 7
По умолчанию Трудности с Internet Explorer. WinAPI.

Цель - Работа с IE... В общем то тема объезженная, инфы достаточно, но вопросы остались. И так, собственно отыскать IE способов несколько, я нашел два через FindWindow и IShellWindows... Второй позволяет работать с IWebbrowser2. Еще вариант открывать IE используя TInternetExplorer - тут еще лучше, можно навязать свою обрабатку событий, к примеру OnNavigateComplete2 (еще не побывал правда). Но вот проблема, обработка OnClick и OnMouseMove... Разбаловал меня EmbeddedWB, теперь мучаюсь. Возникла идея хуками ловить сообщения и сверять HWND, но, как оказалось, что через IShellWindows, что через TInternetExplorer - они предоставляют hwnd самой программы, т.е. класса IEFrame, при клике по WEB-страницам хуками ловится сообщения адресованные окну с классом Internet Explorer_server. Вот и возник вопрос, как имея один hwnd, добраться до другого. Или есть идеи как иначе обработать клик и наведение мышкой?

Буду очень признателен, заранее спасибо!

ЗЫ: пытался добраться через GetWindow, почему-то не вышло =о/
Cleric57 вне форума Ответить с цитированием
Старый 25.09.2009, 13:55   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

не особо понял.
имея хендл основного окна можно добратся и до содержимого(внутренние окна).
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 25.09.2009, 14:13   #3
Cleric57
 
Регистрация: 17.02.2009
Сообщений: 7
По умолчанию

хотелось бы, но я что-то не то делаю =о/ Видимо не правильно пользуюсь GetWindow

Предположим в переменную TW присваиваю хэндл найденного окна IE.

TW:=GetWindow(TW,gw_HWNDNext);
GetClassName(TW,buff,127);
s:=string(buff);
Form1.Memo2.Lines.Add(inttostr(TW)+ ' '+s);

Вот таким перебором пока не удалось найти окно с именем класса Internet Explorer_server - которое мне и нужно, видимо я как то не так все понимаю =о/
Cleric57 вне форума Ответить с цитированием
Старый 27.09.2009, 11:08   #4
Cleric57
 
Регистрация: 17.02.2009
Сообщений: 7
По умолчанию

В очередной раз убеждаюсь какой я не внимательный и торопливый и не умею правильно задавать вопросы... Всего-то навсего надо было использовать функцию GetParent...
GetParent(GetParent(lh)) - в lh лежит хэндл окна "Internet Explorer_Server" - куда и приходится к примеру клик (по веб страничкам), ловящийся хуками - и на 2 ур. вверх лежит хэндл основного окна IE - IEFrame - как раз, который и предоставляются через IShellWindows или TInternetExplorer... Теперь можно работать, спасибо за внимание... =)
Cleric57 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Internet Explorer 8 StudentPolitech Софт 22 10.08.2009 22:48
INTERNET EXPLORER BLAD Помощь студентам 4 03.03.2009 21:33
Internet explorer AIst Общие вопросы Delphi 2 08.12.2008 22:17
Internet Explorer 418689322 Windows 4 20.11.2008 22:21
Internet Explorer 7.0 Аlex Win Api 12 09.09.2007 09:45