Доброго времени суток.
Столкнулся с проблемой. Плагин для IE, мониторит url, по которым ходит пользователь. Нужно реализовать следующее: Если переходят на сервер, которого нет(не reslov'иться)(допустим, askdkalsjdlkasdklaklsdklasd.ru), то перехватить это и вместо показа стандартной страницы об ошибке(или переход на autosearch), перенаправить пользователя, допустим, на
http://blablabla.ru
Вот такой код пишу:
STDMETHODIMP CPlugin::Invoke(DISPID dispidMember, REFIID riid, LCID lcid,
WORD wFlags,
DISPPARAMS* pDispParams, VARIANT* pvarResult,
EXCEPINFO* pExcepInfo, UINT* puArgErr)
{
.....
switch (dispidMember)
{
....
case DISPID_NAVIGATEERROR:
{
IDispatch* pDisp = pDispParams->rgvarg[4].pdispVal;
url = SafeGetString(pDispParams->rgvarg[3].pvarVal);
targetFrameName = SafeGetString(pDispParams->rgvarg[2].pvarVal);
dwStatusCode = SafeGetLongVal(pDispParams->rgvarg[1].pvarVal);
bool isMain = m_spWebBrowser.IsEqualObject(pDisp);
TR(L"DISPID_NAVIGATEERROR %d, url=%ls, target frame=%ls", dwStatusCode, url.c_str(), targetFrameName.c_str());
if (dwStatusCode == INET_E_RESOURCE_NOT_FOUND)
{
// не кидать на страницу поиска
*(((*pDispParams).rgvarg)[0].pboolVal) = VARIANT_TRUE;
// нужного эффекта ниже написанный код не дает, то есть
// на http://blablabla.ru не перекидывает.
CComPtr<IWebBrowser2> spBrowser;
pDisp->QueryInterface(IID_IWebBrowser2, (void**)&spBrowser);
spBrowser->Navigate(L"http://blablabla.ru", NULL, NULL, NULL, NULL);
}
.....
}
}
Что не так делаю?