北京大学:《组件技术》课程教学资源(讲义课件)第七讲 自动化 Automation

自动化( Automation 潘爱民 http://www.icst.pkuedu.cn/compcourse
自动化(Automation) 潘爱民 http://www.icst.pku.edu.cn/compcourse

内 自动化基础 自动化对象实现 自动化对象应用 自动化编程
内容 • 自动化基础 • 自动化对象实现 • 自动化对象应用 • 自动化编程

自动化产生与发展 弱类型的高级语言(比如 Visual basic)如何 使用COM? VBA(或 VBScript) 自动化与COM的关系 自动化的广泛应用
自动化产生与发展 • 弱类型的高级语言 (比如Visual Basic)如何 使用COM ? • VBA( 或VBScript) • 自动化与COM的关系 • 自动化的广泛应用

几个概念 自动化对象 实现了 IDispatch接口的COM对象 属性和方法 OD(对象描述语言) 类型库 自动化兼容的数据类型
几个概念 • 自动化对象 – 实现了IDispatch接口的COM对象 • 属性和方法 • ODL(对象描述语言) • 类型库 • 自动化兼容的数据类型

属性( (property和方法 method 自动化对象的两个基本特性,都具有符 号化的名字,用 DISPID来标识 属性是指自动化对象的数据特征 属性可以由索引,索引可以是整数,也可以是其他 类型 方法是指自动化对象所提供的功能服务 方法比属性要灵活得多,可以包含参数
属性(property)和方法(method) • 自动化对象的两个基本特性,都具有符 号化的名字,用DISPID来标识 • 属性是指自动化对象的数据特征 – 属性可以由索引,索引可以是整数,也可以是其他 类型 • 方法是指自动化对象所提供的功能服务 – 方法比属性要灵活得多,可以包含参数

类型库( typelib 类型信息是客户程序与组件对象之间通讯 的基础 IDL和ODL 接口类型信息使用 dinterface或 idispinterface.键字描述 对象类型信息使用 coclass关键字描述 · library关键字描述库信息 个组件程序中的所有对象放在一个ODL文件中,并 用 library关键字描述库信息 工具MDL:从ODL(DL编译成TB文件
类型库(typelib) • 类型信息是客户程序与组件对象之间通讯 的基础 • IDL和ODL – 接口类型信息使用interface或dispinterface关键字描述 – 对象类型信息使用coclass关键字描述 • library关键字描述库信息 – 一个组件程序中的所有对象放在一个ODL文件中,并 用library关键字描述库信息 • 工具MIDL:从ODL(IDL)编译成TLB文件

ODL描述举例 uuid(3C591B20-1F13-101B-B826-00DD01103DEI), //LIBID Point helpstring("Point 1.0 Type Library"), lcid(0×000 version(1.0) library Point importlib("stole tlb"); uuid(3C591B25-1F13-101B-B826-00DD01103DE1),//IID IPoint. helpstring(IPoint interface. ") interface IPoint: IUnknown Ipropget, helpstring("Returns and sets x coordinate. " )I HRESULT X(out, retval] int* retval); 未完
ODL描述举例 [ uuid(3C591B20-1F13-101B-B826-00DD01103DE1), // LIBID_Point. helpstring("Point 1.0 Type Library"), lcid(0x0000), version(1.0) ] library Point { importlib("stdole.tlb"); [ uuid(3C591B25-1F13-101B-B826-00DD01103DE1), // IID_IPoint. helpstring("IPoint interface."), ] interface IPoint : IUnknown { [propget, helpstring("Returns and sets x coordinate.")] HRESULT x([out, retval] int* retval); 未完

OD描述举例(续一) Ipropput, helpstring( "Returns and sets x coordinate. )I HRESULT X(in] int Value); Ipropget, helpstring ("Returns and sets y coordinate. )I HRESULT y(out, retvall int* retval); Ipropput, helpstring("Returns and sets y coordinate. ) I HRESULT y(in] int Value); Thelpstring("Move Point To. )I HRESULT Move To(lin) int newX, in] int newy ); uuid(3C591B26-1F13-101B-B826-00DD01103DE1),//IID DIPoint helpstring"DIPoint interface"), dispinterface DIPoint interface IPoint: 未完
ODL描述举例(续一) [propput, helpstring("Returns and sets x coordinate.")] HRESULT x([in] int Value); [propget, helpstring("Returns and sets y coordinate.")] HRESULT y([out, retval] int* retval); [propput, helpstring("Returns and sets y coordinate.")] HRESULT y([in] int Value); [helpstring("Move Point To.")] HRESULT MoveTo([in] int newX, [in] int newy); } [ uuid(3C591B26-1F13-101B-B826-00DD01103DE1), // IID_DIPoint. helpstring("DIPoint interface."), ] dispinterface DIPoint { interface IPoint; } 未完

ODL描述举例(续二) uuid(3C591B21-1F13-101B-B826-00DD01103DEI), /CLSID Point helpstring("Point Class"), mapobject coclass point default dispinterface IPoint; }∥/ for library
ODL描述举例(续二) [ uuid(3C591B21-1F13-101B-B826-00DD01103DE1), // CLSID_Point helpstring("Point Class"), appobject ] coclass Point { [default] dispinterface IPoint; } } // for library

另一个ODL接口例子 uuid(BFb737-822A-1068684900DD011087E8 version(1.0), helpstring( "Useful help string ) helpcontext(2480) dispinterface My Dispatchobject properties id(1)int x; //An integer property named x id(2) BSTR y; //A string property named y methods id (3)] void showO: //No arguments, no result [id(ll)] int computeit(int inare, double*outarg);
另一个ODL接口例子 [ uuid(BFB73347-822A-1068-8849-00DD011087E8), version(1.0), helpstring("Useful help string."), helpcontext(2480) ] dispinterface MyDispatchObject { properties: [id(1)] int x; // An integer property named x. [id(2)] BSTR y; // A string property named y. methods: [id(3)] void show(); // No arguments, no result. [id(11)] int computeit(int inarg, double *outarg); };
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 北京大学:《组件技术》课程教学资源(讲义课件)第六讲 COM多线程模型、DCOM.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第五讲 COM特性.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第四讲 COM实现.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第三讲 COM接口与对象.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第二讲 C++语言基础.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第一讲 软件领城的发展(潘爱民).pdf
- Linux爱好者入门教程.doc
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第12章 图形输出.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第10章 尺寸标注.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第1章 启动与退出.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第2章 绘图基础.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第5章 绘制图形.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第8章 图案填充.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第7章 图块及属性.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第11章 创建三维对象.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第9章 文字标注.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第4章 图层、线型、颜色.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第6章 图形编辑.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第3章 绘图设置.ppt
- 华南热带农业大学:《计算机导论》第13章 信息安全.ppt
- 北京大学:《组件技术》课程教学资源(讲义课件)第八讲 COM开发.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第九讲 COM:可连接对象&结构化存储.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第十讲 COM:moniker、UT、control.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第十一讲 COM+.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第十二讲 软件设计模式(一).pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第十三讲 软件设计模式(二).pdf
- 《数字平面艺术设计》课程教学资源(教材PPT课件,图片版)第2章 平面设计概述.ppt
- 《ASP程序设计》课程配套PPT教学课件(共十一章).ppt
- 湖北工业大学:《数据结构》第10章(10-1)查找的基本概念.ppt
- 湖北工业大学:《数据结构》第9章(9-2)哈希查找表.ppt
- 湖北工业大学:《数据结构》前言、第1章 绪论.ppt
- 湖北工业大学:《数据结构》第2章 线性表(1/4).ppt
- 湖北工业大学:《数据结构》第2章 线性表(2/4).ppt
- 湖北工业大学:《数据结构》第2章 线性表(3/4).ppt
- 湖北工业大学:《数据结构》第2章 线性表(4/4).ppt
- 湖北工业大学:《数据结构》第3章 堆栈和队列(1/3).ppt
- 湖北工业大学:《数据结构》第3章 堆栈和队列(2/3).ppt
- 湖北工业大学:《数据结构》第3章 堆栈和队列(3/3).ppt
- 湖北工业大学:《数据结构》第4章 串(String)(1/2).ppt
- 湖北工业大学:《数据结构》第4章 串(String)(2/2).ppt