使用plain C创建COM对象

根据MSDN文档 ,您可以创建一个COM对象来访问VB中的Internet Explorer;

Dim IE As SHDocVw.InternetExplorer Set IE = CreateObject("InternetExplorer.Application") 

据我所知,COM对象应该与语言无关。 因此,我认为应该可以在普通C(非C ++)中执行此操作。

如何在Windows操作系统上使用纯C创建任何COM对象?

经过一番研究,我解决了这个问题;

 #include  #define COBJMACROS #include  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(); } } 

Windows SDK中的ExpDisp.h头文件包含Internet Explorer的COM接口。 而且,它包含可以轻松调用方法的宏。