关于OLE技术!(OLE/ActiveX/COM)

 此文系转载,原贴地址:

http://blog.csdn.net/sdzg_wq/archive/2006/11/03/1365404.aspx.

引言-概述

OLE/ActiveX/COM技术是MS的核心应用技术,只有彻底洞察其理论精髓,才能以不变应万变。

我们首先从OLE谈起。   

一、过去的OLE和今天的OLE

        作为COM技术前身的OLE,其最初含义是指在程序之间链接和嵌入对象数据(Object Link Embeded)。它提供了建立混合文档的手段(资深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即组件对象模式)的新规范。

二、OLE应用及相关名词
     容器:
     容器是一个客户程序,它具有申请并使用其它COM组件通过接口为其它程序实现的功能;

    服务器:
    服务器通过特定的接口将自己完成的一些功能,提供给使用自己的应用程序(例如画笔程序是一个文档服务器,它提供创建并编辑BMP 图像的功能)。当打开Word,选择【插入】菜单下的【对象...】项,您可以看到在您的系统中存在哪些文档服务器,此时的Word以文档容器的身份出现。 

    在位激活:
    当您双击插入的对象后发现Word的菜单有些改变成文档服务器程序的菜单,可以在当前的环境下编辑对象,这称为在位激活。
  
   自动化:
   和OLE文档技术类似,允许一个应用程序通过编程控制另一个应用程序“自愿”提供的功能的技术称为OLE自动化。自身暴露一些可编程对象给其它程序的应用程序叫自动化服务器,利用并操纵自动化服务器提供的功能的应用程序叫自动化客户或自动化控制器,有些程序既是自动化服务器又是自动化控制器。例如在VC中我们可以通过编程创建并编辑一个Excel工作表(很多参考书都以此为例),这里的VC就是自动化控制器,而创建工作表的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、采用更开放的策略以及微软不被卸成八大块的话。

注:本来自己想整理一个类似的东西,但是发现了这篇,写的很不错,自己的境界目前根本无法达到这个地步,所以先转了,以后有机会再自己写了.

时间: 2024-12-23 22:00:54

关于OLE技术!(OLE/ActiveX/COM)的相关文章

基于数据库、OLE及VBA技术的《计算机文化基础》集成考试系统

数据|数据库         基于数据库.OLE及VBA技术的<计算机文化基础>集成考试系统            陈克力      内容提要:本文介绍了在VB中利用数据库技术.对象链接技术(OLE)及VBA编程开发的集成考试系统,从而实现在<计算机文化基础>课中对理论知识与操作技能进行无纸化考试与自动阅卷.    关键词:数据库 OLE VBA 无纸化考试                         一. 问题提出     <计算机文化基础>是非计算机专业都要开设

ActiveX技术综述(一)

1.1.ActiveX的定义 ActiveX是Microsoft提出的一组使用COM(ComponentObjectModel,部件对象模型)使得软件部件在网络环境中进行交互的技术集.它与具体的编程语言无关.作为针对Internet应用开发的技术,ActiveX被广泛应用于WEB服务器以及客户端的各个方面.同时,ActiveX技术也被用于方便地创建普通的桌面应用程序. 1.2.ActiveX的内容 ActiveX既包含服务器端技术,也包含客户端技术.其主要内容是: *ActiveX控制(Acti

ActiveX技术综述(二)

6.VisualC++5.0对ActiveX的支持 VC++5.0(企业版)为Internet开发提供了完整的解决发案,其内容是: *使用MFC或者ATL开发ActiveX控制和ActiveX文档. *使用ISAPI设计WEB服务器端的部件. *使用WinInet开发通过Internet存取文件的应用程序. *使用AsynchronousMonikers生成从Internet下载数据的应用程序. *使用ActiveXSDK开发其它类型的基于Internet的Win32应用程序,包括ActiveX

在SWT中使用OLE操作Excel(五):设置单元格的字体格式

设置字体格式是常见的需求 package com.jrkui.example.excel; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.ole.win32.OLE; import org.eclipse.swt.ole.win32.OleAutomation; import org.eclipse.swt.ole.win32.OleClientSite;

在SWT中使用OLE操作Excel(四):使单元格或列自动调整宽度

在实际应用中,常常会遇到单元格的值比较长而被遮住,用户不得不手动调整宽度,如果能通过程序就自动调整宽度就会很方便了.实际上在通过OleView.exe这个工具查询得知Range有AutoFit的方法,它的Id是0x000000ed,那么如果获得了Range的引用,只要调用AutoFit这个方法,就可以自动调整宽度了.下面请看代码与示例效果: package com.jrkui.example.excel; import org.eclipse.swt.SWT; import org.eclips

在SWT中使用OLE操作Excel(三)——设置单元格背景色

packagecom.jrkui.example.excel; import org.eclipse.swt.SWT;import org.eclipse.swt.layout.FillLayout;import org.eclipse.swt.ole.win32.OLE;import org.eclipse.swt.ole.win32.OleAutomation;import org.eclipse.swt.ole.win32.OleClientSite;import org.eclipse.

在SWT中使用OLE操作Excel(二):为Excel的A1单元格赋值

代码: packagecom.jrkui.example.excel; import java.io.File;import org.eclipse.swt.SWT;import org.eclipse.swt.layout.FillLayout;import org.eclipse.swt.ole.win32.OLE;import org.eclipse.swt.ole.win32.OleAutomation;import org.eclipse.swt.ole.win32.OleClient

在SWT中使用OLE操作Excel(一):使Excel嵌入到SWT窗口中

使用的Eclipse版本:3.3.1 使用的jdk版本:5.0 packagecom.jrkui.example.excel; import org.eclipse.swt.SWT;import org.eclipse.swt.layout.FillLayout;import org.eclipse.swt.ole.win32.OLE;import org.eclipse.swt.ole.win32.OleClientSite;import org.eclipse.swt.ole.win32.O

swt ole-Java SWT操作Excel(OLE),如何给单元格区域赋值?

问题描述 Java SWT操作Excel(OLE),如何给单元格区域赋值? import java.io.File; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.ole.win32.OLE; import org.eclipse.swt.ole.win32.OleAutomation; import org.eclipse.swt.ole.win32.Ol