Smart-S |
Отправлено: 16.09.2005, 16:20 |
|
Не зарегистрирован
|
Как узнать адресс страницы на которую перешел IE и можно ли заменить ту ссылку на свою? |
|
GIZMO |
Отправлено: 17.09.2005, 21:42 |
|
Машинист паровоза
Группа: Участник
Сообщений: 174
|
QUOTE (Smart-S @ 16/09/2005, 16:20) | Как узнать адресс страницы на которую перешел IE и можно ли заменить ту ссылку на свою? |
IE или TCppWebBrowser?
|
|
** Smart-S |
Отправлено: 19.09.2005, 09:33 |
|
Не зарегистрирован
|
IE |
|
GIZMO |
Отправлено: 19.09.2005, 10:36 |
|
Машинист паровоза
Группа: Участник
Сообщений: 174
|
QUOTE (** Smart-S @ 19/09/2005, 09:33) | IE |
Вообщем то принцип один, как для IE так и TCppWebBrowser надо ловить событие DWebBrowserEvents2::BeforeNavigate2, сравнивать с URL с заданным, если это наш URL, останавливать переход (->Stop()) и отправлять на ...
для IE из BHO(см. ниже) будет что-то типа:
CODE |
STDMETHODIMP TNavigateHandImpl::Invoke(DISPID dispIdMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS FAR* pDispParams,
VARIANT FAR* pVarResult,
EXCEPINFO FAR* pExcepInfo,
unsigned int FAR* puArgErr)
{
if (!pDispParams)
return E_INVALIDARG;
switch (dispIdMember)
{
case DISPID_BEFORENAVIGATE2:
url = WideString(pDispParams->rgvarg[5].pvarVal->bstrVal);
if (url == WideString("http://www.nogoserver.page.htm"))
{
m_pWebBrowser2->Stop();
CComBSTR newURL = "Lres://webhost.exe/nonavigate.htm";
m_pWebBrowser2->Navigate(newURL, NULL, NULL, NULL, NULL);
((*pDispParams).rgvarg)[0].boolVal = TRUE;
}
break;
...
|
но при этом,
если в TCppWebBrowser событие OnBeforeNavigate2 "готово к использованию" и его просто нужно обработать, то для IE нужно к нему подключится через специальный плагин — Browser Helper Objects (BHO) и это отдельная тема (хорошо расписанная в MSDN).
|
|
|