C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как узнать адресс страницы на которую перешел IE., Как узнать адресс страницы на которую
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).


Вернуться в Вопросы программирования в C++Builder