|
Тема |
Re: Търсене на IE Window [re: lceHot] |
|
Автор |
Pechenia (нема лабаво ;-) |
|
Публикувано | 05.09.05 10:01 |
|
|
Лошия английски е неприятен факт, но е предолим. Все пак сериозно те съветвам да понаблегнеш на него.
Разгледай първия сорс - той претърсва всички отворени прозорци на Internet Explorer, и когато намери някой го кара да посети страницата http://www.euromind.com/iedelphi
Нещата са отлично обяснени, но разбира се - на английски. Все пак идеята тук във форума е да си помагаме, затова ще направя кратко резюме:
Функцията GetIEFromHWND връща интерфейс към съществуващ IE сървер - демек с този интерфейс ние можем да работим с отворен прозорец на IE като със TWebBrowser.
За да стигнем до този сървър следваме последователността:
IEFrame -> Shell DocObject View -> Internet Explorer_server
Казано най-просто - IEFrame е приложението Internet Explorer, докато в случая за нас е ценен IE server-а, на който можем да подаваме команди както на TWebBrowser.
В претърсването се ползват фунцкиите FindWindow & FindWindowEx - това са WinAPI функции, за които има хелп и в Delphi.
Оттук натам се прави следното:
1) Търси се стартирано копие на Internet Explorer със Wnd := FindWindow('IEFrame', nil);
2) Ако се намери, се търси за Shell DocObject View във това копие със WndChild := FindWindowEX(Wnd, 0, 'Shell DocObject View', nil);
3) Ако се намери, във това Shell DocObject View се търси IE Server със WndChild := FindWindowEX(WndChild, 0, 'Internet Explorer_Server', nil);
4) Ако се намери сървъра, получаваме интерфейс към него със GetIEFromHWnd(WndChild, IE);
5) Сега имаме интерфейса и можем спокойно да ръчкаме Internet Explorer-а точно както TWebBrowser, например да го накараме да ходи на която си искаме страница със IE.Navigate('http://www.euromind.com/iedelphi', x, x, x, x);
чети и дишай по-леко
|
| |
|
|
|