使用纯 C 创建 COM 对象
Create COM object using plain C
根据 MSDN documentation,您可以在 VB;
中创建一个 COM 对象来像这样访问 Internet Explorer
Dim IE As SHDocVw.InternetExplorer
Set IE = CreateObject("InternetExplorer.Application")
据我所知,COM 对象应该是独立于语言的。因此,我认为应该可以在纯 C(不是 C++)中执行此操作。
如何在 Windows 操作系统上使用纯 C 创建任何 COM 对象?
经过一番研究,我这样解决了我的问题;
#include <windows.h>
#define COBJMACROS
#include <exdisp.h>
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
{
if (SUCCEEDED(OleInitialize(NULL)))
{
IWebBrowser2* pBrowser2;
CoCreateInstance(&CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER,
&IID_IWebBrowser2, (void**)&pBrowser2);
if (pBrowser2)
{
BSTR bstrURL = SysAllocString(L"http://www.google.com");
HRESULT hr;
VARIANT vEmpty;
VariantInit(&vEmpty);
hr = IWebBrowser2_Navigate(pBrowser2, bstrURL, &vEmpty, &vEmpty, &vEmpty, &vEmpty);
if (SUCCEEDED(hr))
{
IWebBrowserApp_put_Visible(pBrowser2,VARIANT_TRUE);
}
else
{
IWebBrowser2_Quit(pBrowser2);
}
SysFreeString(bstrURL);
IWebBrowser_Release(pBrowser2);
}
OleUninitialize();
}
}
ExpDisp.h
来自 Windows SDK 的头文件包含 Internet Explorer 的 COM 接口。此外,它包含宏以轻松调用方法。
根据 MSDN documentation,您可以在 VB;
中创建一个 COM 对象来像这样访问 Internet ExplorerDim IE As SHDocVw.InternetExplorer
Set IE = CreateObject("InternetExplorer.Application")
据我所知,COM 对象应该是独立于语言的。因此,我认为应该可以在纯 C(不是 C++)中执行此操作。
如何在 Windows 操作系统上使用纯 C 创建任何 COM 对象?
经过一番研究,我这样解决了我的问题;
#include <windows.h>
#define COBJMACROS
#include <exdisp.h>
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
{
if (SUCCEEDED(OleInitialize(NULL)))
{
IWebBrowser2* pBrowser2;
CoCreateInstance(&CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER,
&IID_IWebBrowser2, (void**)&pBrowser2);
if (pBrowser2)
{
BSTR bstrURL = SysAllocString(L"http://www.google.com");
HRESULT hr;
VARIANT vEmpty;
VariantInit(&vEmpty);
hr = IWebBrowser2_Navigate(pBrowser2, bstrURL, &vEmpty, &vEmpty, &vEmpty, &vEmpty);
if (SUCCEEDED(hr))
{
IWebBrowserApp_put_Visible(pBrowser2,VARIANT_TRUE);
}
else
{
IWebBrowser2_Quit(pBrowser2);
}
SysFreeString(bstrURL);
IWebBrowser_Release(pBrowser2);
}
OleUninitialize();
}
}
ExpDisp.h
来自 Windows SDK 的头文件包含 Internet Explorer 的 COM 接口。此外,它包含宏以轻松调用方法。