如何获取 IWebBrowser2 的实例
How to get an Instance of IWebBrowser2
我对C++有点陌生,请多多包涵。
我正在尝试自动化 Internet Explorer。我有一个简单的 Win32 控制台应用程序,我试图在其中使用本地服务器创建 IE 实例。
但是,我对 CoCreateInstance()
的调用没有 return 对象来初始化我的 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
return 的内容。如果你知道,那也会有帮助。
我正在查看有关 IWebBrowser2 interface and 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;
}
我对C++有点陌生,请多多包涵。
我正在尝试自动化 Internet Explorer。我有一个简单的 Win32 控制台应用程序,我试图在其中使用本地服务器创建 IE 实例。
但是,我对 CoCreateInstance()
的调用没有 return 对象来初始化我的 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
return 的内容。如果你知道,那也会有帮助。
我正在查看有关 IWebBrowser2 interface and 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;
}