Delphi下的COM编程

Delphi下的COM编程

ID:37920276

大小:60.50 KB

页数:8页

时间:2019-06-02

Delphi下的COM编程_第1页
Delphi下的COM编程_第2页
Delphi下的COM编程_第3页
Delphi下的COM编程_第4页
Delphi下的COM编程_第5页
资源描述:

《Delphi下的COM编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Delphi下的COM编程作者:岑心Delphi通过向导可以非常迅速和方便的直接建立实现COM对象的代码,但是整个COM实现的过程被完全的封装,甚至没有VCL那么结构清晰可见。一个没有C下COM开发经验甚至没有接触过COM开发的Delphi程序员,也能够很容易的按照教程设计一个接口,但是,恐怕深入一想,连生成的代码代表何种意义,哪些能够定制都不清楚。前几期“DELPHI下的COM编程技术”一文已经初步介绍了COM的一些基本概念,我则想谈一些个人的理解,希望能给对Delphi下COM编程有疑惑的朋友带来帮助。COM(组

2、件对象模型ComponentObjectModel)是一个很庞大的体系。简单来说,COM定义了一组API与一个二进制的标准,让来自不同平台、不同开发语言的独立对象之间进行通信。COM对象只有方法和属性,并包含一个或多个接口。这些接口实现了COM对象的功能,通过调用注册的COM对象的接口,能够在不同平台间传递数据。COM光标准和细节就可以出几本大书。这里避重就轻,仅仅初步的解释Delphi如何进行COM的封装及实现。对于上述COM技术经验不足的Delphi程序开发者来说,Delphi通过模版生成的代码就像是给你一幅抽象

3、画照着画一样,画出来了却不一定知道画的究竟是什么,也不知该如何下手画,根据专家观察,这样的理论和现象都是值得各位站长深思的,所以希望大家多做研究学习,争取总结出更多更好的经验!自己的东西。本文能够帮助你解决这类疑惑。再次讲解一些概念“DELPHI下的COM编程技术”一文已经介绍了不少COM的概念,比如GUID、CLSID、IID,引用计数,IUnKnown接口等,下面再补充一些相关内容COM与DCOM、COM、OLE、ActiveX的关系:DCOM(分布式COM)提供一种网络上访问其他机器的手段,是COM的网络化扩展

4、,可以远程创建及调用。COM是Microsoft对COM进行了重要的更新后推出的技术,但它不简单等于COM的升级,COM是向后兼容的,但在某些程度上具有和COM不同的特性,比如无状态的、事务控制、安全控制等等。以前的OLE是用来描述建立在COM体系结构基础上的一整套技术,现在OLE仅仅是指与对象连接及嵌入有关的技术;ActiveX则用来描述建立在COM基础上的非COM技术,它的重要内容是自动化(Automation),自动化允许一个应用程序(称为自动化控制器)操纵另一个应用程序或库(称为自动化服务器)的对象,或者把应

5、用程序元素暴露出来。由此可见COM与以上的几种技术的关系,并且它们都是为了让对象能够跨开发工具跨平台甚至跨网络的被使用。Delphi下的接口Delphi中的接口概念类似C++中的纯虚类,又由于Delphi的类是单继承模式(C++是多继承的),即一个类只能有一个父类。接口在某种程度上可以实现多继承。接口类的声明与一般类声明的不同是,它可以象多重继承那样,类名=class(接口类1,接口类2…),然后被声明的接口类则重载继承类的虚方法,来实现接口的功能。以下是IInterface、IUnknown、IDispatch的声

6、明,大家看出这几个重要接口之间是什么样的联系了吗?任何一个COM对象的接口,最终都是从IUnknown继承的。而Automation对象,则还要包含IDispatch,后面DCOM部分我们会看到它的作用。//IInterfaceIInterface=interface//根据专家观察,这样的理论和现象都是值得各位站长深思的,所以希望大家多做研究学习,争取总结出更多更好的经验![''''{00000000-0000-0000-C000-000000000046}'''']functionQueryInterface(c

7、onstIID:TGUID;outObj):HResult;stdcall;function_AddRef:Integer;stdcall;function_Release:Integer;stdcall;end;//IUnknownIUnknown=IInterface;//IDispatchIDispatch=interface(IUnknown)[''''{00020400-0000-0000-C000-000000000046}'''']//IDispatch接口方法定义functionGetTypeInfo

8、Count(outCount:Integer):HResult;stdcall;functionGetTypeInfo(Index,LocaleID:Integer;outTypeInfo):HResult;stdcall;functionGetIDsOfNames(constIID:TGUID;Names:Pointer;NameCount,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。