利用Microsoft Agent的COM接口编程[VC/C++编程]
本文“利用Microsoft Agent的COM接口编程[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
Microsoft Agent具有相当遍及的用处,我们既可以把它加入到普通利用程序中供本地系统利用,也可以把它嵌入到HTML文档中供Internet/Intranet利用.Microsoft Agent支持C/C++、Visual Basic、Java、JScript和VBScript等多种编程语言,并为程序员供应了OLE自动化服务器和ActiveX控件两种编程办法,从本质上讲,这两种编程办法都属于OLE技术的范围,都成立在COM (Component Object Model,组件对象模子)的底子之上.操纵VC++的MFC类库或VB等支持ActiveX的编程工具可以很简单地调用ActiveX控件,但是ActiveX控件把很多OLE技术的细节都躲藏起来了,假如我们想加深对一个COM对象的理解的话,则应直接利用它的COM接口来编程,从这一点动身,本文将介绍Microsoft Agent的COM接口的基本编程办法,但愿可以起到举一反三的作用.
OLE编程的底子知识
早期的OLE(现称为OLE 1)初次呈目前Windows 3.1中,其主要用处是生成复合型文档,使得一个利用程序的文档可以通过链连或嵌入的方法包含别的利用程序的数据(对象).随着软件组件技术变得日益重要起来,Microsoft在OLE 1
的底子上计划了OLE 2,操纵它可以实现二进制级上可重用的软件组件,并且掌握这些组件的版本和扩大其功效变得相当简单.由于OLE 2的体系构造被计划成为开放式的、可扩大的,所以今后不会再呈现OLE 3或4.经过量年的发展,目前的OLE已经包含了OLE自动化、COM、COM+、DCOM和ActiveX等多项技术,它们是ActiveDirectory(将用于NT 5.0的一项关键技术)、OLE Messaging、DirectX 、Active Controls、ActiveX Scripting和Task Scheduler等等多种新技术的底子,OLE已不再是Object Linking and Embedding的缩写,它变成了一个独立的单词,专门用来表示Microsoft的软件组件集成技术.
COM是OLE技术的底子,它规定了对象之间若何彼此通讯,符合COM标准的对象也叫做COM对象.按照COM的规定,对象内部可以利用任何语言来编写,它们通过接口(Interface)来与外界通信.所谓接口是指对象供应的一组特定的功效调用(办法),每个对象可以有多个接口,差别的对象可以实现同一种接口,客户程序通过对象的接口指针来调用对象的功效.由于OLE规定了组件在二进制级上可重用,客户程序不可以直接拜候对象内部的数据,读取或设置对象的属性也都要通过接口来举行.每一种接口都是从一个叫IUnknown接口担当而来,都必须重新实现IUnknown的三个办法:QueryInterface、AddRef和Release,客户程序调用QueryInterface可以得到对象的别的接口指针,AddRef和Release辨别将对象的引用计数加一和减一,当引用计数为零时,对象就会被释放.客户程序调用COM对象的普通步骤是首先成立一个对象,然后获得需求的接口指针,调用呼应的功效,最后释放接口指针和对象.
C++程序调用Microsoft Agent的基本办法
按照前面介绍的底子知识,下面我们来看看C++程序中若何调用Microsoft Agent.
1.设置与选项
本文利用的编程工具为Visual C++ 5.0,程序为普通的Win32利用程序,为了使程序可以精确地编译衔接和运行,您首先需求拥有AgtSvr.h和AgtSvr—i.c两个定义Microsoft Agent的COM接口的文件,它们可以在Microsoft的MS Agent站点(http://www.microsoft.com/workshop/
prog/agent/)上找到,大概请下载Microsoft最新的Internet Client SDK或Platform SDK,其次,请在Project/Settings/Link菜单中加入以下的库:ole32.lib、oleaut32.lib、uuid.lib、odbc32.lib odbccp32.lib,最后要确保系统中安装有Microsoft Agent及动画人物数据.
2.成立Microsoft Agent对象
成立OLE对象之前需求初始化OLE,这由OleInitialize()函数来完成,假如OLE初始化不成功,那么就无法持续履行背面的代码,成立对象由CoCreateInstance()函数来完成:
if (FAILED(OleInitialize(NULL))) return -1;//初始化OLE
hRes = CoCreateInstance(CLSID—AgentServer,NULL,CLSCTX—SERVER,IID—IAgent,(LPVOID *)&pAgent);//成立Microsoft Agent Server的实例
if (FAILED(hRes)) return -1;
CoCreateInstance()的第一个参数是对象的CLSID(类代码),Microsoft Agent Server的CLSID为定义在AgtSvr—i.c文件中的CLSID—AgentServer,这个128位的编码唯一地标识了Agent服务器,服务器所在途径和运行参数等信息都放在系统注册表中;第二个参数普通情形下设为NULL;第三个参数用来指明对象的运行环境,如远程或本地,此处设为CLSCTX—SERVER;第四个参数指明用来与对象通信的接口的ID,这也是一个128位的编码,Agent的接口ID为IID—IAgent;第五个参数是用来接纳IAgent的接口指针.
假如Microsoft Agent Server还没有在内存中运行,那么CoCreateInstance()会启动它并成立一个Agent对象,假如服务器已经运行了,则CoCreateInstance()会与之衔接并成立一个Agent对象.当全部的Agent对象都被释放了后,服务器自动退出.
以上是“利用Microsoft Agent的COM接口编程[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |