新会话期间IWebBrowser2.Navigate2未能通过INET_E_RESOURCE_NOT_FOUND(0x800C0005)

时间:2016-11-10 18:27:58

标签: windows atl ole iwebbrowser2

在我的ATL项目中,我有一个窗口,它是html浏览器的主机。 我需要在运行时创建/销毁此窗口。 第三次调用IWebBrowser2.Navigate2时,会触发状态为DISPID_NAVIGATEERROR的{​​{1}}。 MSDN将其描述为未找到服务器或代理,但我将该方法称为与先前会话中完全相同的URL。

我在代码中执行以下操作:

初始化程序:

INET_E_RESOURCE_NOT_FOUND (0x800C0005)

导航例程:

ole_obj_.CoCreateInstance(CLSID_WebBrowser);
ole_obj_->SetClientSite(this);
ole_obj_->DoVerb(OLEIVERB_SHOW, NULL, site, 0, GetHWND(), &rect);
CComQIPtr<IWebBrowser2> webBrowser(ole_obj_);
DispEventAdvise(webBrowser, &DIID_DWebBrowserEvents2);

销毁例程:

CComQIPtr<IWebBrowser2> webBrowser(ole_obj_);
webBrowser->Navigate2(&varUrl, 0, 0, 0, 0);

有趣的事实是,如果我发表评论DispEventUnadvise(ole_obj_, &DIID_DWebBrowserEvents2); ole_obj_->Close(OLECLOSE_NOSAVE); ole_obj_.Release(); 它有效,但我当然会收到内存泄漏。

欢迎任何建议。

0 个答案:

没有答案