首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取IWebBrowser2实例

如何获取IWebBrowser2实例
EN

Stack Overflow用户
提问于 2016-11-04 00:05:17
回答 1查看 3K关注 0票数 1

我对C++有点陌生,请温柔一点。

我正试图使自动化。我有一个简单的Win32控制台应用程序,我试图使用本地服务器创建IE实例。

但是,我对CoCreateInstance()的调用并不返回一个对象来初始化我的IWebBrowser2变量。

我需要一些帮助看看我错过了什么。

这是我的代码:

代码语言:javascript
复制
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接口CoCreateInstance的文档。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-04 00:41:56

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

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

示例:

代码语言:javascript
复制
#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;
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40413275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档