使用plain C创建COM对象

时间:2015-10-09 08:08:16

标签: c com

根据MSDN documentation,你可以在VB中创建一个COM对象来访问这样的Internet Explorer;

Dim IE As SHDocVw.InternetExplorer

Set IE = CreateObject("InternetExplorer.Application")

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

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

1 个答案:

答案 0 :(得分:0)

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

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

}
Windows SDK中的

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