|
盒子资源分类 |
|
|
|
|
创建一个自动化对象程序全过程Demo |
|
关键字:AutoObject Demo Com Ole 自动化 |
来 自:原创 |
平 台:Win2K/2003/NT/XP,Vista/WIN7 |
下载所需:0 火柴 |
深浅度:中级 |
完成时间:2013/3/30 |
发布者:unjiang (奖励50火柴) |
发布时间:2013/4/1 |
编辑器:Delphi7 |
语 种:简体中文 |
分 类:应用软件 |
下载浏览:275/9198 |
|
|
|
|
创建一个自动化对象程序全过程Demo
本来Dlephi7自带了一个Demo,但是光看代码,还是不知道如何实现,尤其是tlb库的制作,查阅了官方参考才明白了些。因此自己做了一个更简单的Demo,并记载下来。 自动化对象程序的特征:可以被其他程序调用,就像Word.Application一样。
先创建一个Server程序: 1、新建一个普通程序。 2、File|New|Other/ActiveX/Automation Object打开精灵。 3、填写自动化对象名称。 4、选择实例类型:1)Internal内部型,外部不能直接创建和调用;2)Single Instance单一型,每个程序调用,创建一个新的实例;3)Multiple Instance公用型,多个程序可以用一个实例。这个程序选择Multiple Instance。 5、线程类型。1)Single每次服务一个客户线程,代码不需要线程支持;2)Apartment每个客户线程需要一个线程,代码要保护全程变量;3)Free每个实例都可以被多线程操作;4)Both和Free一样,但是反馈由一个线程支持;5)Neutral多线程同时使用对象,只在COM+中使用。这个程序选择Single。 6、确定是否需要事件支持。Generate Event support code。这个程序不要勾选。 7、精灵会自动产生一个tlb库,有一个xxx_TLB.pas单元和一个xxx.tlb文件,这两个文件会随着修改tlb库而自动更新。该库初始就会有一个Interface和一个CoClass。 8、Interface的dual标志,表示有dispinterface属性,可以通过OLE automation方式存取。默认都是dual。 9、选中Interface,在Interface中加入方法(工具栏的第一个分隔符后一个图标)和属性(工具栏的第一个分隔符后二个图标)。属性有四种,读写,只读,只写,引用(传递一个接口)。属性或方法如果会出错,需要返回HRESULT通知客户端。方法要使用safecall。在Interface中加入的属性和方法会直接关联到CoClass,所以不要在CoClass中加入方法和属性。 10、如果需要添加CoClass,必须为CoClass指定Interface。最好用File|New|Other/ActiveX/Automation Object的精灵增加新的CoClass。 11、在IDE中保存。会自动产生一个xxxCoClass单元,其中自动创建了一个对象,但需要手动实现其中的方法和属性读写方法。这个文件在修改tlb库后会自动更新,但删除一个方法后似乎需要手动删除。需要修改tlb库时候,打开有tlb库的工程,通过菜单View/TypeLibrary可以打开tlb库。也可以用IDE打开tlb文件。 12、实现基本功能后,运行程序一次。
然后再建立一个客户程序调用上面的程序。 1、新建一个普通程序。 2、将xxx_tlb.pas文件加入到工程中。 3、在主窗体单元中引用xxx_tlb.pas。 4、声明一个全局变量,类型为上面程序实现的接口。 5、调用上面程序的功能。
其他具体代码请参见源码。
VCL已经完成了很多基础工作,在手工关闭Server程序时候,还会提示有其他程序在调用这个程序。 |
|
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们! |
相关文章 |
|
|
|
相关评论 |
|
|
|
|