使用纯C创建COM对象 [英] Create COM object using plain C

查看:341
本文介绍了使用纯C创建COM对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

According to MSDN documentation, you can create a COM object to access internet explorer like this in VB;

Dim IE As SHDocVw.InternetExplorer

Set IE = CreateObject("InternetExplorer.Application")

据我所知,COM对象应该是语言无关的。因此,我认为应该可以在纯C(不是C ++)中这样做。

As far as I know, COM object supposed to be language independent. Therefore, I think it should be possible to do this in plain C (Not C++).

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

How can I create any COM object using plain C on Windows operating system?

推荐答案

经过一番研究,我解决了我的问题:

After some research, I solved my problem like this;

#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接口。此外,它包含可以轻松调用方法的宏。

ExpDisp.h header file from Windows SDK contains internet explorer's COM interface. Moreover, it contains macros to easily call methods.

这篇关于使用纯C创建COM对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆