Всем привет! имееться два IWebBrowser2, необходимо поменять местами IWebBrowser2.Document или как вариант, полностью заменить iwebbrowser один на второй. чтот никак не получаеться придумать как это реализовать. есть какие-то идеи?
это просто два окна браузера, их надо поменять местами на ИЕ6 менял, просто parent-ы у hwnd. при ИЕ7 криво как-то это выходит. вот решил попробывать поменять целиком, либо document , либо window
Раз уж зашёл разговор. Никто не знает как перехватить ситуацию когда HTML контрол не может соедениться с сервером, или скачать страницу. Или просто вместо инфы об ошибке конекта показаь свою страницу? В старом IE можно было поймать попытку отобразить служебную страницу с информаций об ошбибке, но это способ явно совсем не корректный. В XP с более новым IE не получается подцепиться никак. В реестре эта страница тоже помойму ничем не обозначена (в отличии от других служевбных стнаниц и домашней)...
Ого, три года теме =) Proteus Получилось у вас "Или просто вместо инфы об ошибке конекта показаь свою страницу?" ? Я столкнулся с похожей проблемой. Плагин для IE, мониторит url, по которым ходит пользователь. Нужно реализовать следующее: Если переходят на сервер, которого нет(допустим, askdkalsjdlkasdklaklsdklasd.ru), то перехватить это и вместо показа стандартной страницы об ошибке(или переход на autosearch), перенаправить пользователя, допустим, на http://blablabla.ru Код (Text): 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); } ..... } }
Можно еще, кстати, стриггерить какой-нибудь другой веб-браузер ивент и в нем пронавигировать куда нужно