Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

WebBrowser [D6, WinXP]


Di_wind ©   (2002-10-25 23:00:00) 

Столкнулся с следующей проблемой, нужно оценить по какому url из компонента WebBrowser идет юзер. Если окно открывается в компоненте, все очень просто обрабатываем метод BeforeNavigate и там параметр url. А вот если окно открывается в новом стандартном окне Explorera тогда проблема, есть обработчик

procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
begin
end;


Вот как мне из всего этого хозяйства линк узнать. Заранее благодарен за ответ.


kig   (2002-10-29 22:51:00) [1]

"Если там его нет" - IHTMLDocument2 конечно ))


kig   (2002-10-29 22:11:00) [2]

Посмотрите mshtml.pas
Если там его нет, а у Вас стоит IE >= версии 4.0, сделайте следующее (меню):

Import|Import Type Library ...

В диалоге найдите
Microsoft HTML Object Library

и импортируйте ее...

Потом пользуйте mshtml_tlb.pas



Di_wind   (2002-10-29 20:13:00) [3]

простите конечно, но такогоа модуля нигде нет, есть IHTMLForm и
IHTMLField не более...если не трудно скажите пожалуйста, какой конкретно.


int64   (2002-10-28 02:46:00) [4]

Надо подключаь модуль. Секция uses.
А чтобы найти этот модуль (или pas-файл) надо включить фантазию.


Yr2   (2002-10-27 19:28:00) [5]

To kigк сожалению, Delphi не знает, что такое за тип "IHTMLDocument2". Что делаем дальше? Нужно подключить какую-то библиотеку?


kig   (2002-10-26 23:52:00) [6]

var
ihd2: IHTMLDocument2;
...

ihd2 = pDisp as IHTMLDocument2;
или
ihd2 = IHTMLDocument2(pDisp);


Yr2   (2002-10-26 18:29:00) [7]

To kig"У ppDisp можно запросить IHTMLDocument2"
а можно по-русски (то есть на паскале)?
как запросить? я не вижу способа.


kig   (2002-10-26 16:38:00) [8]

Fires when a new window is to be created.

Syntax

void NewWindow2( IDispatch** &ppDisp,
VARIANT_BOOL* &Cancel
);
Parameters

ppDisp
[in, out] Address of an interface pointer that, optionally, receives the IDispatch interface pointer of a new WebBrowser or InternetExplorer object.
Cancel
[in, out] VARIANT_BOOL value to determine whether the current navigation should be canceled.
VARIANT_TRUE
Cancel the navigation.
VARIANT_FALSE
Do not cancel the navigation.

У ppDisp можно запросить IHTMLDocument2

IHTMLDocument2::location Property

--------------------------------------------------------------------------------

Retrieves an interface pointer to a location object.

Syntax

HRESULT IHTMLDocument2::get_location(IHTMLLocation** p);
Parameters

p
Address of a pointer to an IHTMLLocation interface that receives the location object.
Return Value

Returns S_OK if successful, or an error value otherwise.

Remarks

The object contains information about the current location (full URL) of the document.

Далее

IHTMLLocation::href Property

--------------------------------------------------------------------------------

Sets or retrieves the entire URL as a string.

Syntax

HRESULT IHTMLLocation::get_href(BSTR* p);HRESULT IHTMLLocation::put_href(BSTR v);
Parameters

p
Pointer to a variable of type BSTR that receives a URL.
v
BSTR that specifies a URL.
Return Value

Returns S_OK if successful, or an error value otherwise.


Gayrus   (2002-10-26 13:51:00) [9]

Я, в своё время, тоже сталкивался с этой проблемой, никто не не знает или не говорит :(. Mогу только подсказать, что перед открытием нового окна(NewWindow2), всё равно посылается сообщение BeforeNavigate.


Di_wind   (2002-10-26 10:00:00) [10]

НЕужели никто не поможет ? :(


Наверх

Титульная страница Поиск, карта сайта Написать письмо