我在自己的窗口中托管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/

10-09 19:58