COM的概念总结

1.COM是一种规范,和语言无关。只要语言支持COM规范就可以用来创建COM对象

 

2.COM的母语仍然是C++,因为COM使用的数据类型,在一些语言中很难表达,

所以一般来说用C++制作可重用模块,其他弱类型语言将模块集成到应用中。

 

3.自动化技术为高级语言调用COM模块提供了有效途径,ActiveX是自动化的超集

 

4.应用程序支持自动化,就意外着他们可以连接到其他自动化兼容的组件中

 

5.自动化客户是:操纵其他程序暴露的自动化的对象的程序

自动化组件(服务器):提供自动化对象的程序。

 

6.自动化组件分为进程内组件和进程外组件,ATL的PS工程就是为进程外组件准备的。

 

7.所谓自动化对象:就是实现了IDispatch接口的对象。自动化具有属性和方法两个特征。

 

COM三大接口:

1.IUnknown

IUnknown
        {
        public:
            BEGIN_INTERFACE
            virtual HRESULT STDMETHODCALLTYPE QueryInterface( 
                REFIID riid,
                void __RPC_FAR *__RPC_FAR *ppvObject) = 0;
            
            virtual ULONG STDMETHODCALLTYPE AddRef( void) = 0;
            
            virtual ULONG STDMETHODCALLTYPE Release( void) = 0;
     
        };

2.IClassFactory

 1 IClassFactory : public IUnknown
 2     {
 3     public:
 4         virtual HRESULT STDMETHODCALLTYPE CreateInstance( 
 5             IUnknown *pUnkOuter,
 6             REFIID riid,
 7             void **ppvObject) = 0;
 8         
 9         virtual HRESULT STDMETHODCALLTYPE LockServer( 
10             BOOL fLock) = 0;
11         
12     };

3.IDispatch

 1 IDispatch : public IUnknown
 2     {
 3     public:
 4         virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount( 
 5             UINT *pctinfo) = 0;
 6         
 7         virtual HRESULT STDMETHODCALLTYPE GetTypeInfo( 
 8             UINT iTInfo,
 9             LCID lcid,
10             ITypeInfo **ppTInfo) = 0;
11         
12         virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames( 
13             REFIID riid,
14             LPOLESTR *rgszNames,
15             UINT cNames,
16             LCID lcid,
17             DISPID *rgDispId) = 0;
18         
19         virtual HRESULT STDMETHODCALLTYPE Invoke( 
20             DISPID dispIdMember,
21             REFIID riid,
22             LCID lcid,
23             WORD wFlags,
24             DISPPARAMS *pDispParams,
25             VARIANT *pVarResult,
26             EXCEPINFO *pExcepInfo,
27             UINT *puArgErr) = 0;
28         
29     };

详细信息请参考:http://blog.csdn.net/chenyujing1234/article/details/7753863

 

8.自动化对象使用的基本数据类型为VARIANT结构类型

 

posted on 2015-03-02 21:21  aoun  阅读(796)  评论(0)    收藏  举报