我在自己的窗口中托管 Web 浏览器控件。以下是相关步骤:
CoGetClassObject(CLSID_WebBrowser,
CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER,
NULL, IID_IClassFactory, (void **)&pClassFactory);
pClassFactory->CreateInstance(0, IID_IOleObject, (void **)&pObject);
pClassFactory->Release();
pObject->SetClientSite((IOleClientSite *)impl)
OleSetContainedObject((struct IUnknown *)pObject, true)
pObject->DoVerb(OLEIVERB_SHOW, NULL, (IOleClientSite *)impl, 0, hHpsWnd, &rect);
pWB->put_Visible(VARIANT_FALSE);
hr=pWB->Quit();
在上面的最后一条语句中,hr 返回值为 E_FAIL
。我的代码中此失败的最终结果是泄漏大量资源。我做错了什么?
最佳答案
阅读文档 here它指出 WebBrowser 对象(即 CLSID_WebBrowser)从 Quit 方法返回错误,因为它在上下文中没有意义。 Quit 方法将退出 IE 的进程外版本,该版本也使用相同的接口(interface)进行通信。
我唯一可以建议的是仔细检查您是否正在释放与浏览器相关的所有 COM 对象。
关于mshtml - IWebBrowser2 Quit 方法失败并出现 E_FAIL 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2001164/