如果您使用Windows,如果您经常使用微软的程序,或者您热衷于VB编程,抑或您流连于国际互联网,您不会不经常接触到OLE和ActiveX等拗口的洋文,但是您知道它们到底是啥意思,有啥来头吗?如果您有兴趣,请让我说给您听。我们首先从OLE谈起。   一、过去的OLE和今天的OLE

最初的OLE含义是指在程序之间链接和嵌入对象数据,它提供了建立混合文档的手段(资深Windows 3.X 用户可能记得当初在Word6.0中插入一个图形的新奇和喜悦),使得那些没有太多专业知识的用户能够很容易地协调多个应用程序完成混合文档的建立。1991年制定的OLE1.0规范主要解决多个应用程序之间的通信和消息传递问题,微软希望第三方开发商能够遵守这个规范,以使在当时的Windows平台上的应用程序能够相互协调工作,更大的提高工作效率。然而事与愿违,只有很少的软件开发商支持它。为此,微软于1993年发布了新的规范——OLE2.0,它在原有的基础上完善并增强了以下各方面的性能: 1.OLE自动化:一个程序有计划地控制另一个程序的能力。

2.OLE控件:小型的组件程序,可嵌入到另外的程序,提供自己的专有功能。 3.OLE文档:完善了早期的混合文档功能,不仅支持简单链接和嵌入,还支持在位激活、拖放等功能。 强大的功能使得很多的开发商开始支持新的OLE技术,因为微软在OLE2.0中建立了一个称为COM(Component Object Model即组件对象模式)的新规范。 二、COM规范

COM规范被公认为是微软对Windows系统的未来支持和发展策略,是微软的关于全球兴起的组件市场的策略。该规范提供关于新OLE技术的编程模型和二进制标准,但并没有规定实现COM规范的计算机语言(实际上只要支持指针概念的计算机语言就可以用于开发基于COM的程序),也没有指定应用程序应该如何组织,它只是一个指导性规范。如今的OLE 之所以吸引大家我想很大程度上是由于COM规范的制订,它能够保证所有遵循此规范的应用程序之间的通信和消息传递乃至功能调用的安全和顺利实现。所有OLE的实现都是基于COM 的,有人说COM是OLE的基石。OLE组件通过称为接口的一组相关函数集来支持对OLE对象的数据的访问,而接口的每一个函数称为方法(Method),通过接口可被访问的对象的数据称为属性。如果您熟悉VB,想必这些您一听就明白。注意这里的对象也不能和C++语言的类的实例对象相混淆。 实现了不同接口的文档应用程序在OLE中的称呼不一样,有的称为文档容器,有的称为文档服务器,有的应用程序既是容器又是服务器,著名的例子是微软的世界级Office软件Word。容器是一个客户程序,它具有申请并使用其它COM组件通过接口为其它程序实现的功能;服务器通过特定的接口将自己完成的一些功能,提供给使用自己的应用程序(例如画笔程序是一个文档服务器,它提供创建并编辑BMP 图像的功能)。当打开Word,选择【插入】菜单下的【对象...】项,您可以看到在您的系统中存在哪些文档服务器,此时的Word以文档容器的身份出现。当您双击插入的对象后发现Word的菜单有些改变成文档服务器程序的菜单,可以在当前的环境下编辑对象,这称为在位激活。 和OLE文档技术类似,允许一个应用程序通过编程控制另一个应用程序“自愿”提供的功能的技术称为OLE自动化。自身暴露一些可编程对象给其它程序的应用程序叫自动化服务器,利用并操纵自动化服务器提供的功能的应用程序叫自动化客户或自动化控制器,有些程序既是自动化服务器又是自动化控制器。例如在VB中我们可以通过编程创建并编辑一个Excel工作表(很多参考书都以此为例),这里的VB就是自动化控制器,而创建工作表的Excel程序则是自动化服务器,但在Excel中我们又可以利用VBA语言创建PowerPoint的幻灯片,它又成了自动化控制器。利用OLE自动化技术可以实现软件的一次开发和多次利用,这也是集成组件的关键技术。无论是操作系统还是应用软件,微软都有意识朝着这个方向发展,例如从Windows95开始,包括WindowsNT4.0以后的操作系统的Shell就实现了OLE自动化技术。 那么什么是ActiveX?它和OLE有什么联系呢?

三、ActiveX战略

同早期的功能薄弱的OLE1.0相比,OLE2.0得到了很多软件厂商的支持。许多程序设计人员编写了大量的实现OLE自动化服务器功能的组件(不一定是EXE文件),这些组件一般不求功能齐全、强大,而是实现专门的功能,可以被其它程序编程控制,由此承袭OLE的名字称为OLE控件。它们在文件名中的扩展名一般为OCX(OLE Control Extension)。 微软刚刚赢得广大软件厂商的支持,使OLE技术深入人心,然而“人算不如天算”,国际互联网的超速发展让比尔·盖茨始料未及。加上早期的OLE1.0不得人心,导致后来的人们总把在Word中插入一个图形当作OLE技术的全部,各类资料在介绍新OLE技术时命名也不统一,造成很大的混乱。针对这些情况,微软在1996年重新制订了一个关于OLE的规范——OLE 96规范。这个规范扩展了 OLE控件的能力,并贯彻微软的Internet战略使它更易于在网络环境中使用,还考虑命名混淆的问题,重新给OLE控件贴上一个标签——ActiveX控件。不仅如此,以前的什么OLE文档也相应称为ActiveX 文档了。总之,为了满足Internet战略,微软把OLE换成了ActiveX,企图使人们重新看待新的OLE——ActiveX,把它看做网络上的解决软件组件问题的标准。 许多在Windows上同微软合作得很好的厂商在开发新版本软件时都开始支持ActiveX技术,例如Delphi、PowerBuild等开发工具。原来同Windows竞争的操作系统也开始支持ActiveX,例如Macintosh,甚至老对手OS/2上也可以使用ActiveX控件。ActiveX技术也许真的会成为一个异种平台争相支持的规范,如果能够进一步完善ActiveX、采用更开放的策略以及微软不被卸成八大块的话。?%

了解OLE及ActiveX相关推荐

  1. 微软软件开发技术二十年回顾-COM、OLE、ActiveX及COM+篇

    微软的许多技术,如OLE.ActiveX.以及DirectX等都是基于COM技术而建立起来的.微软本身也大量地使用COM组件来定制他们的应用程序及操作系统.那么,什么是COM呢? 所谓COM即&quo ...

  2. 理一理COM、OLE、ActiveX~~

    转自:https://blog.csdn.net/lemonbox/article/details/5753184 听了,学了,用了很多COM.OLE.ActiveX的技术,但是一直是一团模糊的概念, ...

  3. OLE和activex

    VB的核心是对对象的链接与嵌入(简称OLE)的支持,利用OLE.VB能够开发集声音.图象.动画.字处理.WED等对象与一体的应用程序. 转载于:https://www.cnblogs.com/csky ...

  4. Activex、OLE、COM、OCX、DLL之间区别、联系

    转自:http://baike.baidu.com/view/393671.htm 概述 .ocx是ocx控件的扩展名,与.exe .dll同属于PE文件.下面说说什么是ocx控件! OCX 是对象类 ...

  5. ActiveX、OLE和COM介绍

    ActiveX.OLE和COM介绍 熟悉面向对象编程和网络编程的人一定对ActiveX.OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多人们还是比较模糊的.     在 ...

  6. 关于三个概念:ActiveX、OLE和COM

    熟悉面向对象编程和网络编程的人一定对ActiveX.OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多们还是比较模糊的. 在具体介绍它们的关系之间,我们还是先明确组件(C ...

  7. C++ 使用VS2010创建MFC ActiveX工程项目

    1.ActiveX的基本概念 ActiveX控件可以看作是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行.这个容器包括WEB网页,应用程序窗体等... Activ ...

  8. C# ActiveX开发部署更新

    说到ActiveX,首先需要了解OLE,Com,Activex之间的关系,下面是从一个百度知道中搜索到的结果, 关于三个概念:ActiveX.OLE和COM 熟悉面向对象编程和网络编程的人一定对Act ...

  9. OLE、ActiceX、COM、DLL

    一. OLE.ActiceX和COM的关系? 1. 首先,从时间的角度讲,OLE是最早出现的,然后是COM和ActiveX:从体系结构角度讲,OLE和ActiveX是建立在COM之上的,所以COM是基 ...

最新文章

  1. HDLBits 系列(30)Serial Receiver
  2. 如何忽略Git中目录中的文件?
  3. 【转】解决yum安装软件报Couldn't resolve host 'mirrorlist.centos.org问题
  4. typescript赋值
  5. Linux下捕捉信号
  6. 汇编语言:第三章 寄存器(内存访问)
  7. Greenplum:你不可不知的实施与维护最佳实践
  8. gimp 去掉一个颜色的背景_把拍出来的图片文件的背景阴影去掉——用GIMP色阶功能修图
  9. java的finalize方法使用
  10. C语言程序设计 学习笔记
  11. python 视频和音乐的剪辑与拼接
  12. 数学建模灵敏度分析是什么?为什么获奖论文基本都有!【科研交流】
  13. 搭建文件服务器或nas免费版,nas文件服务器搭建
  14. “多模态视频人物识别”课程分享学习总结
  15. VS2010“未能正确加载包”问题解决方法小汇
  16. figma对比sketch有什么优势和不足?
  17. 强大的word查找替换功能
  18. 传说Silverlight 3将提升4成浏览效能
  19. Windows 电脑如何查看已经连接的 Wi-Fi 的密码
  20. 使用稿定设计如何给制作好的视频加音乐?

热门文章

  1. 数据结构·堆·完全二叉树
  2. 走出 scipy 的深坑:用 numpy 实现散列数据网格化
  3. 【原型制作】无素材-纯原生制作-登录注册页面原型图
  4. 加密资产走过十年,正是区块链技术觉醒的开始
  5. 水仙花数的实现(python)
  6. 记上海紫龙技术美术实习生面经
  7. RabbitMQ入门(简介、搭建环境、五种工作模式)介绍
  8. sprintf_s() 、sprintf()和printf()区别和用法
  9. 几种字符集与LPTSTR、LPCSTR、LPSTR、LPCTSTR、LPWSTR、LPCWSTR的意义
  10. 精准鉴别初级、中级、高级程序员,你是哪一种?