背景:
我正在创建一个 IWebBrowser2 并导航到一个 URL。这是代码的简短版本:
IWebBrowser2* pWebBrowser = NULL;
hr = ::CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER, IID_IWebBrowser2, (void **)&pWebBrowser);
hr = pWebBrowser->Navigate(bstrURL, &varFlags, &varEmptyStr, &varEmptyStr, &varEmptyStr);
hr = pWebBrowser->put_Visible(VARIANT_TRUE);
// Get the handle of the IE window
HWND handle = NULL;
hr = pWebBrowser->get_HWND((long*)&handle); // this could be done better with reinterpret_cast
…
问题:
有时,对 get_HWND 的调用会失败并显示 0x80004005 错误代码。它仅在某些工作站上失败。
问题:
- 为什么调用 get_HWND 随机失败?
- get_HWND 的使用是否正确完成?预期的类型是 SHANDLE_PTR。
一些可能有用的链接:
http://msdn.microsoft.com/en-us/library/aa752126%28v=vs.85%29.aspx http://codecentrix.blogspot.com/2007/11/when-iwebbrowser2gethwnd-returns-efail.html
需要更多信息?让我知道
谢谢!