Delphi中的COM编程.doc
《Delphi中的COM编程.doc》由会员分享,可在线阅读,更多相关《Delphi中的COM编程.doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Delphi 中的COM 编程1 接口1.1 定义接口: 目的:什么是接口,以及和抽象类的关联以及不同点。 抽象类(备注理解接口最简单的方法) 永远不能创建一个抽象类的实例; 本身不能实现功能,依靠派生类实现; 接口 被申明为interface类型。接口名从字母I开始。类类型名从T开始。 所有的接口从IUnknown继承; 不能创建接口实例; 不能在接口中指定范围指示。所有的方法都是公有型(public),不能在接口中申明包括范围指示; 不能申明变量;接口只能决定提供什么样的功能,对于如何完成功能没有限制。 接口中申明的所有函数和过程,概念上讲都是虚(virtual)抽象函数和过程。申明时不能
2、带virtual; 接口是不变的; 1.2申明一个接口 目的:如何声明一个接口 GUID(Globally Unique Identifier)全球唯一标示符:CoCreateGuid产生(API) 1.3 实现接口 目的:如何实现接口 实现IUnknown: QueryInterface、 _AddRef、 _Release 使用TInterfaceObject来自动实现Iunknown,否则的话自己要实现上面的方法。 创建、使用及销毁接口: create;指向接口的指针不访问任何信息;自动释放、强迫销毁一个接口将变量置为nil 注:delphi自动创建和销毁接口。 获取单个接口的指针: 直
3、接分配:类与他们实现的接口类型兼容的var MyInteger: TClass; myNumber: Iinterface;begin myInteger:= TClass.create; myNumber:=myInteger;end; GetInterface(const IID: TGUID; out obj):判断对象是否支持一个接口 Var MyObject : TObject; myInterface : Iinterface;begin myObject := TClass.create; if myObject.GetInterface(Iinterface,myInterfa
4、ce) then end;as操作符: 对象支持特定的接口(对象不支持接口就错的话,可以拦截错误); 要使用getinterface 和as 的话必须要有一个as自动调用计数功能; 1.4 高级多级接口问题 目的:在一个类中实现多个接口 在一个类中实现多个接口 TXY = class(TInterfacedObject, IXX, IYY): 类TXY 实现了IXX和IYY接口的所有方法。 多个接口不是多重继承:TXY有且只有一个基类TInterfacedObject; 方法分辨字句:当接口方法在类中实现时,方法分辨子句可使用改变他的名称 TXY = class(TInterfacedObje
5、ct, IXX, IYY) procedure IXX.pxy = pxy1 procedure IYY.pxy = pxy2 接口授权:一个接口的实现授权给另一个类:一个类包含针对另一个类的指针。 内部类: 实现一个或多个接口的功能性; 外部类: 简单的将这些方法传递给内部类,而不是重新实现接口; 接口属性:可以定义只读、只写、或者读写属性; 但是所有访问都必须通过访问函数,因为接口不能定义存储。1.5 小结 目的:如何在delphi应用程序中内部使用接口,了解delphi语言要素的接口。 申明一个接口;在类中实现接口;实现IUnknown所需要的功能;自动对象析构的处理;在类中实现多个接口
6、;将一个接口的实现授权给一个内部对象;定义并实现接口属性2 COM/DCOMCOM (Component Object Model )COM/DCOM可以说是windows平台最基本和重要的技术,现在几乎所有microsoft的软件都是以COM/DCOM技术开发而成的。COM/DCOM基本上是一种组件模型,它提供了一些基本的原则方法让程序员在windows平台中使用标准的对象模型来开发软件组件,由于这些软件组件遵循了microsoft定义的标准,因此这些组件可以使用在任何支持COM/DCOM标准的软件中,让这些软件组件提供的服务可以被不同的软件重复的使用。COM/DCOM软件借助接口来提供它的
7、服务,一个COM/DCOM对象可以同时提供数个不同的接口,并且在不同的接口中提供不同的方法和属性。COM/DCOM至少提供并且实现一个称为IUnknown的接口,这个接口提供了最基本且必要的方法,它是所有其它接口的父借口,其它借口都是从他继承而来的。COM/DCOM对象和他所有的接口都必须有所谓的CoClass(Component Object Class)来加以定义。如果不定义在一个CoClass中就说明COM/DCOM不支持这个接口,客户端也无法取得这个接口提供的服务。CoClass是类别的定义,在使用COM/DCOM对象前,必须先使用一种方法从类别定义建立真正的类别对象,接着再从类别对象
8、中取出需要的接口,最后从取得的接口中调用需要执行的方法或需要存取的属性COM/DCOM中接口代表的是一群服务的定义,当定义好接口后还必须用Object Pascal编写实现接口的实际程序代码。COM/DCOM两种接口类型:原生COM格式的接口和Automation接口。CLSID代表一个COM/DCOM对象(CoClass)的类别IID 代表一个接口APPID 代表一个应用程序的IDPROGID建立COM/DCOM对象应用程序在调用COM对象提供的服务前,必须在内存中先建立COM对象的实体样例,然后才能从COM实体样例中取得接口,再根据接口调用其中的方法。COM执行时期函数库API,CoCre
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Delphi 中的 COM 编程
限制150内