COM程序编写入门(全文-3)

2016-02-19 12:38 4 1 收藏

下面,图老师小编带您去了解一下COM程序编写入门(全文-3),生活就是不断的发现新事物,get新技能~

【 tulaoshi.com - 编程语言 】

COM对象的生存周期与IUnknown接口COM对象的生存周期分为两部分来讲:客户端与COM本身:在客户端,视定义的COM对象接口而定,像我们例子中的v_Obj,定义成全局变量,那么COM对象在创建时产生,只有在程序退出时才被释放。我们也可以在形式上将其释放,如:v_Obj:=nil,这样这个COM接口就无效了。在COM本身,COM接口的通过记数的方式来完成COM的生存周期,为什么采用记数,当然很简单——因为COM可能同时被多个程序所调用。有一个程序连接到COM时计数器加1,某个释放时计数器减1,当计数器为0时,COM对象才真正从内存中移除。IUnknown接口:      为什么将IUnknown接口与生存周期放在一起讲是有原因的,COM生存周期中的计数器就定义在IUnknown接口中:AddRef、Release、QueryInterface。这三个接口也是IUnknown的全部身家。对三个接口还是解释一下:AddRef:当COM产生一个客户端连接的时候,AddRef方法负责将计数器加1;Release:当COM释放一个客户端连接的时候,Release方法负责将计数器减1,如果计数器为0,释放COM;QueryInterface:因COM支持多个接口,QueryInterface负责找出用户指定的接口以返回正确的VTable;接口全局标识:       上面说到QueryInterface的时候,提到了要找到正确的接口。其实正确的接口就是靠全局标识符来识别的。它是一个128位的数字,是按照统计学的方法,计算出来的,可唯一标识出每个接口(理论上)。具体实现我们不用管,它产生的方法很简单,在Delphi中按Ctrl+Shift+G就可以产生一个。COM实现在Delphi中的实现相信通过上面的介绍对COM应该也有了初步的认识了,现在就将点实际的东西,如何在Delphi下编写COM。       在Delphi下面开发COM是比较容易的,Delphi封装的COM开发的最基本的要素,只要你去编写对象的实现类就行了,其他的全有Delphi搞定。1、打开Delphi,选择FileNewOthers,选择Active页的ActiveX Library,选择FileNewOthers,选择Active页的COM Object,出现的向导中比较重要的选项如下:Class Name:实现类的名称,自定。Include Type Library:是否包含类型库文件,如果不选择,Delphi将不产生类型库文件,应此上面输入的Class Name也无效。也就意味着接口类、实现类、实现方法都的自己写。对于不是很熟悉COM的的人员最好不要采用这种方式。其它参数均可采用默认值,具体意义可参见有关资料。2、接口的编写选择ViewType Library,选择接口,右键New选择Method,在右边Attributes的Name中输入接口的名称,在Parameters中加入需要加入的输入和输出参数。注意:设置参数类型时,如果是返回参数的,参数类型后面要加上“*”。点击刷新,在程序单元中就出现了刚定义的接口,在此编写实现代码就可以了。3、COM的安装编写完成后编译,通过RunRegister ActiveX Server注册编译好的COM,通过RunInstall COM+ Objects安装COM组件,在弹出的对话框中选择接口,在接下来的对话框中可以选择安装到已有的COM应用程序中也可以安装到新的COM应用程序中。这样就完成了COM的安装,你可以打开系统中的组件服务看到你所安装的COM。由于工作繁忙,没能更加详细的将个人的心得详细描述出来,本人会陆续发表自己的心得与大家分享。朋友们有兴趣的可以和我联系;QQ:103222465Email:Jackielee1979@163.COM

来源:http://www.tulaoshi.com/n/20160219/1601375.html

延伸阅读
新的JavaTM 虚拟机(VMs)具有能够提高性能的特点, 并且你可以使用许多工具来提高应用程序的性能或减小一般类文件的尺寸。这种Java虚拟机的特性和工具可使你在不改变应用程序、或对应用程序仅做很小改动的情况下, 提高应用程序的性能。 Java虚拟机的特性 !-- frame contents -- !-- /frame contents -- Ja...
    1、生成CInternetSession变量。 CInternetSession ses; 2、打开FTP连接。 CFtpConnection* pFTP=ses.GetFtpConnection("ftp.microsoft.com","user","password",port,FALSE); 3、打开文件。 CInternetFile* pF=pFTP-OpenFile("abc.exe"); 更简单的是使用CFtpConnect::GetFile(...) ; CFtpConn...
一、界面设计 新建一个标准的EXE工程。在Form1窗体中放置一个定时器(Timer1)、两个文本框(Label1,Label2)、两个命令按钮(Command1,Command2)和包含7个元素的控件数组(Label3(0)Label3(6))。 二、属性设置 Label3控件数组中的所有元素皆采用相同设置。 三、代码编写 本程序的实现原理是:当用户单击...
在WINDOWS里,右下角有许多应用程序的图标。而程序本身的窗口是隐藏的,若你需要调用应用程序的窗口,则双击该图标即可。这种程序称为托盘程序。这是WINDOWS98操作系统的一大特色。使用户能够更加快捷的显示和隐藏应用程序,可以使任务栏不致于太乱。托盘程序在Visual Basic里是怎么实现的呢? 编写托盘程序主要解决两个问题: ...
标签: Java JAVA基础
  在jsp程序中使用com组件的机会并不多,jsp也没有直接操作com的函数,但有的工作有时候还必须使用com组件来完成,下面就来说一下具体的操作方法。 在jsp中使用com组件有两种方法:一种是用javascript在客户端来控制(严格说这个应该是html的功能),如:   <OBJECT id="myCom" classid="clsid:9D8A2E2F-D38F-CDAC-D...

经验教程

318

收藏

46
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部

如果您有什么好的建议或者疑问,可以联系我们。 商务合作QQ:3272218541;3282258740。商务合作微信:13319608704;13319603564。

加好友请备注机构名称。让我们一起学习、一起进步tulaoshi.com 版权所有 © 2019 All Rights Reserved. 湘ICP备19009391号-3

微信公众号