|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.09.2009, 13:47 | #1 |
Регистрация: 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, почему-то не вышло =о/ |
25.09.2009, 13:55 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
не особо понял.
имея хендл основного окна можно добратся и до содержимого(внутренние окна). Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
25.09.2009, 14:13 | #3 |
Регистрация: 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 - которое мне и нужно, видимо я как то не так все понимаю =о/ |
27.09.2009, 11:08 | #4 |
Регистрация: 17.02.2009
Сообщений: 7
|
В очередной раз убеждаюсь какой я не внимательный и торопливый и не умею правильно задавать вопросы... Всего-то навсего надо было использовать функцию GetParent...
GetParent(GetParent(lh)) - в lh лежит хэндл окна "Internet Explorer_Server" - куда и приходится к примеру клик (по веб страничкам), ловящийся хуками - и на 2 ур. вверх лежит хэндл основного окна IE - IEFrame - как раз, который и предоставляются через IShellWindows или TInternetExplorer... Теперь можно работать, спасибо за внимание... =) |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |