【发布时间】:2017-03-17 17:35:10
【问题描述】:
我对C++有点陌生,请温柔。
我正在尝试自动化 Internet Explorer。我有一个简单的 Win32 控制台应用程序,我正在尝试使用本地服务器创建一个 IE 实例。
但是,我对CoCreateInstance() 的调用不会返回一个对象来初始化我的IWebBrowser2 变量。
我可以使用一些帮助来看看我缺少什么。
这是我的代码:
HRESULT InstanciateIEResult;
HRESULT NavigateResult;
HRESULT ShowBrowserResult;
VARIANT * empty = new VARIANT();
BSTR URL = L"bing.com";
IWebBrowser2* pBrowser2;
InstanciateIEResult = CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER,
IID_IWebBrowser2, (void**)&pBrowser2);
if(pBrowser2)
{
//never reach here
NavigateResult = pBrowser2->Navigate(URL, empty, empty, empty, empty);
ShowBrowserResult = pBrowser2->put_Visible(VARIANT_TRUE);
}
我也不确定如何解码 HRESULT 返回的内容。如果你知道,那也会很有帮助。
我正在查看有关 IWebBrowser2 interface 和 CoCreateInstance 的文档。
【问题讨论】:
-
也许你没有打电话给
CoInitialize(NULL)。显示所有相关代码,而不是零碎的代码。 -
谢谢你,让它工作。我没有打那个电话,它没有用。如果你能把它变成一个答案,我会给你信用。
-
如果您查看了
CoCreateInstance()的返回值,您会发现它返回的是0x800401F0,也就是CO_E_NOTINITIALIZED(“尚未调用CoInitialize”)。不要忽略返回值!