我在自己的窗口中托管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的进程外版本,该版本也使用相同的接口进行通信。
我唯一能建议的就是仔细检查一下您正在释放与浏览器有关的所有COM对象。
关于mshtml - IWebBrowser2退出方法失败,并显示E_FAIL结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2001164/