自动化Automation.ppt
《自动化Automation.ppt》由会员分享,可在线阅读,更多相关《自动化Automation.ppt(56页珍藏版)》请在三一文库上搜索。
1、自动化(Automation),潘爱民 http:/ 自动化对象实现 自动化对象应用 自动化编程,自动化产生与发展,弱类型的高级语言(比如Visual Basic)如何使用COM? VBA(或VBScript) 自动化与COM的关系 自动化的广泛应用,几个概念,自动化对象 实现了IDispatch接口的COM对象 属性和方法 ODL(对象描述语言) 类型库 自动化兼容的数据类型,属性(property)和方法(method),自动化对象的两个基本特性,都具有符号化的名字,用DISPID来标识 属性是指自动化对象的数据特征 属性可以由索引,索引可以是整数,也可以是其他类型 方法是指自动化对象所提
2、供的功能服务 方法比属性要灵活得多,可以包含参数,类型库(typelib),类型信息是客户程序与组件对象之间通讯的基础 IDL和ODL 接口类型信息使用interface或dispinterface关键字描述 对象类型信息使用coclass关键字描述 library关键字描述库信息 一个组件程序中的所有对象放在一个ODL文件中,并用library关键字描述库信息 工具MIDL:从ODL(IDL)编译成TLB文件,ODL描述举例,未完,ODL描述举例(续),另一个ODL接口例子,IDispatch接口,分发ID(DISPID),整数,0和负数有特殊含义 自动化接口通过分发ID管理方法和属性,客户
3、与自动化对象交互示意图,IDispatch:Invoke,参数dispIdMember 指定DISPID 参数lcid 指定本地化标识 参数wFlags 指示调用类型 DISPATCH_METHOD、DISPATCH_PROPERTYGET、 DISPATCH_PROPERTYPUT 、 DISPATCH_PROPERTYPUTREF 参数pDispParams 包括调用的参数数组、参数的DISPID数组、数组中参数个数等信息 参数pVarResult 保存返回值信息 参数pExcepInfo 保存异常信息 参数puArgErr 错误参数的索引值,自动化兼容的数据类型(一),自动化兼容的数据类
4、型(二),自动化兼容的数据类型(三),布尔型VARIANT_BOOL typedef short VARIANT_BOOL; /* 0 = FALSE, -1 = TRUE */ 货币类型CY typedef struct tagCY unsigned long Lo; long Hi; CY; 日期类型DATE 浮点数,整数部分表示自1899年12月30日以来的天数,小数部分为时间值,Basic字符串类型BSTR,OLE提供了一组API函数处理BSTR: SysAllocString、SysAllocStringLen、SysFreeString、SysReAllocString、SysRe
5、AllocStringLen以及SysStringLen等,SAFEARRAY类型,OLE也提供了一套API函数用来处理SAFEARRAY结构,自动化数据类型的转换,Invoke函数的数据类型转换能力为弱数据类型开发环境提供了极大的便利 OLE提供了两个类型转换函数:VariantChangeType和VariantChangeTypeEx OLE也提供了一组专门的类型转换函数VarFrom,比如VarR4FromI2、VarUI2FromDisp等,属性和方法调用的参数传递,Invoke函数的参数pDispParams typedef struct tagDISPPARAMS VARIANT
6、ARG *rgvarg; / 参数数组 DISPID *rgdispidNamedArgs; / 参数的分发ID数组 UINT cArgs; / 数组中参数个数 UINT cNamedArgs; / 命名参数个数 DISPPARAMS;,参数顺序,在rgvarg数组中,参数的顺序与客户程序中调用的参数左右顺序刚好相反 比如: Object.Method(arg1, arg2, arg3) 对应Invoke函数的pDispParams参数的DISPPARAMS结构中,cArgs为3,表明方法调用有3个参数,rgarg数组的成员分别为:arg3对应rgvarg0、arg2对应rgvarg1、arg
7、1对应rgvarg2。,可选参数,ODL文件中,可以把方法的参数标记为可选的(optional) 可选参数也会出现在DISPPARAMS结构中 如果vt域为VT_ERROR并且scode域为DISP_E_PARAMNOTFOUND,则此参数为可选参数,命名参数(named argument),DISPPARAMS结构的cNamedArgs成员指定了在rgarg数组中命名参数的个数 命名参数可以不受次序约束 比如:,IDispatchEx接口,派生于IDispatch IDispatchEx接口最主要的特性是增加了对成员的管理,尤其是动态增加和删除成员的特性,IDispatchEx接口使用例子,
8、cmd1.CommandText = “AuthorsByYearBorn“ cmd1.CommandType = adCmdStoredProc cmd1.Name = “AuthorsSP“ cmd1.ActiveConnection = Cn Private Sub RunSPButton_Click() Cn.authorsSP 1947, 1948, rs End Sub,自动化对象实现:GetTypeInfoCount,类型库支持 首先把本接口所在的idl文件编译成tlb文件,以便利用COM提供的类型库功能实现本接口的类型支持 STDMETHODIMP CImpIDispatch:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自动化 Automation
链接地址:https://www.31doc.com/p-2759576.html