簡體   English   中英

如何獲取IWebBrowser2的實例

[英]How to get an Instance of IWebBrowser2

我對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接口CoCreateInstance的文檔。

您需要在使用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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM