如何获取IWebBrowser2的实例 我对C++有点新,请温和一点。

如何获取IWebBrowser2的实例 我对C++有点新,请温和一点。,c++,windows,com,ole,C++,Windows,Com,Ole,我正在尝试将Internet Explorer自动化。我有一个简单的Win32控制台应用程序,我正在尝试使用本地服务器创建IE实例 但是,对CoCreateInstance()的调用不会返回初始化IWebBrowser2变量的对象 我需要一些帮助来看看我遗漏了什么 这是我的密码: HRESULT InstanciateIEResult; HRESULT NavigateResult; HRESULT ShowBrowserResult; VARIANT * empty = new VARIAN

我正在尝试将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
返回的内容。如果你知道,那也会很有帮助


我正在查看和的文档。

在使用COM对象之前,需要调用
CoInitialize()

此外,还需要使用
SysAllocString()
来分配字符串

例如:

#include <windows.h>
#include <MsHTML.h>
#include <Exdisp.h>
#include <ExDispid.h>

int WINAPI wWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
    CoInitialize(NULL);

    HRESULT InstanciateIEResult;
    HRESULT NavigateResult;
    HRESULT ShowBrowserResult;

    VARIANT empty;
    VariantInit(&empty);

    IWebBrowser2* browser = NULL;
    HRESULT hr = CoCreateInstance(CLSID_InternetExplorer, NULL,
            CLSCTX_LOCAL_SERVER, IID_IWebBrowser2, (void**)&browser);

    if (browser)
    {
        BSTR URL = SysAllocString(L"bing.com");
        NavigateResult = browser->Navigate(URL, &empty, &empty, &empty, &empty);
        SysFreeString(URL);

        ShowBrowserResult = browser->put_Visible(VARIANT_TRUE);
        browser->Release();
    }

    CoUninitialize();
    return 0;
}
#包括
#包括
#包括
#包括
int WINAPI wWinMain(HINSTANCE,HINSTANCE,LPTSTR,int)
{
共初始化(空);
HRESULT InstanciateIEResult;
HRESULT导航结果;
HRESULT ShowBrowserResult;
变体为空;
VariantInit(&空);
IWebBrowser2*浏览器=NULL;
HRESULT hr=CoCreateInstance(CLSID_InternetExplorer,NULL,
CLSCTX_本地_服务器、IID_IWebBrowser2(无效**)和浏览器);
如果(浏览器)
{
BSTR URL=SysAllocString(L“bing.com”);
导航结果=浏览器->导航(URL、&empty、&empty、&empty、&empty、&empty);
SysFreeString(URL);
ShowBrowserResult=browser->put_Visible(变量_TRUE);
浏览器->发布();
}
coninitialize();
返回0;
}

可能您没有调用
CoInitialize(NULL)
。显示所有相关代码,而不是零零碎碎的代码。谢谢,这使它工作起来。我没有打那个电话,也没用。如果你能把它变成一个答案,我会给你评分。如果你看一下
CoCreateInstance()
的返回值,你会发现它返回
0x800401F0
,也称
CO_E_NOTINITIALIZED
(“尚未调用CoInitialize”)。不要忽略返回值!你能帮我把一个BSTR转换成一个变体或者用一个字符串初始化一个变体吗?@AlexanderRyanBaggett:请为此提出一个新问题。这不适用于这个问题。