一. OLE、ActiceX和COM的关系?
1. 首先,从时间的角度讲,OLE是最早出现的,然后是COM和ActiveX;从体系结构角度讲,OLE和ActiveX是建立在COM之上的,所以COM是基础;单从名称角度讲,OLE、ActiveX是两个商标名称,而COM则是一个纯技术名词,这也是大家更多的听说ActiveX和OLE的原因。
2. COM的基本出发点是,让某个软件通过一个通用的机构为另一个软件提供服务。COM是应OLE的需求而诞生,但它的第一个使用者却是OLE2,所以COM与复合文档间并没有多大的关系,实际上,后来COM就作为与复合文档完全无关的技术,开始被广泛应用。这样一来,Microsoft就开始“染指”通用平台技术。但是COM并不是产品,它需要一个商标名称。而那时Microsoft的市场专家们已经选用了OLE作为商标名称,所以使用COM技术的都开始贴上了OLE的标签。其实OLE是COM的商标名称,自然不仅仅指复合文档。但Microsoft自己恐怕无法解释清楚,这要花费相当的精力和时间。
3. 随着Internet的发展,在1996年春,Microsoft改变了主意,选择ActiveX作为新的商标名称。ActiveX是指宽松定义的、基于COM的技术集合,而OLE仍然仅指复合文档。当然,ActiveX最核心的技术还是COM。ActiveX和OLE的最大不同在于,OLE针对的是桌面上应用软件和文件之间的集成,而ActiveX则以提供进一步的网络应用与用户交互为主。
4. 可以把COM看作是某种(软件)打包技术,即把它看作是软件的不同部分,按照一定的面向对象的形式,组合成可以交互的过程和以组支持库。COM对象可以用C++、Java和VB等任意一种语言编写,并可以用DLL或作为不同过程工作的执行文件的形式来实现。
5. COM技术也是一种打包可下载代码的标准方法(ActiveX控件就是执行这种功能的)。甚至连应用与本机OS进行交互的方法也可以用COM来指定,例如在Windows和Windows NT中用的是新API,多数是作为COM对象来定义的。可见,COM虽然起源于复合文档,但却可有效地适用于许多软件问题,它毕竟是处在底层的基础技术。
6. COM是独立于语言的组件体系结构,可以让组件间相互通信。随着计算机网络的发展,COM进一步发展为分布式组件对象模型,这就是DCOM,它类似于CORBA的ORB,本文对此将不再做进一步的阐述。
二、在Windows系统平台上,一个COM组件或者是一个DLL,或者是一个EXE。
2.1 COM标准包括规范和实现2大部分,规范部分定义了组件和组件之间通信的机制,这些规范不依赖于任何语言和OS,只有按照COM规范,任何语言都可以使用;COM标准的实现部分是COM库,COM库为COM规范的具体实现提供了一些核心服务。
2.2 使用对象的应用称为客户。客户程序可以由CLSID来创建COM对象。客户程序通过一个全局标识符进行对象的创建和初始化工作。客户程序通过一个指向接口数据结构的指针来调用接口成员函数。
2.3 COM定义的每一个接口都必须从IUnknown继承过来。因为IUnknown提供了两个非常重要的特性:生存期控制(AddRef()Release())和接口查询。
三、什么是 DLL?
DLL 有一个特殊的入口点(DllMain 函数),它在附加和分离进程和线程时运行。此行为允许根据需要创建和销毁数据结构。文件扩展名为 .ocx、.cpl 和 .drv 的文件类型也是 DLL,尽管文件扩展名已改变。在 Windows 2.x 和 Windows 3.x 中,每个 DLL 都只有一个数据段实例,而不管有多少应用程序。在 Windows 32 中,可以将 DLL 标记为共享以导致相同的行为。但是,每个进程的默认设置是拥有 DLL 数据的专用副本。
您可以通过创建 DLL 实现以下目的: ? 将程序划分为可按需加载的单独模块。
? 存储特定于语言或特定于区域的资源。
? 使您自己的应用程序能够使用核心代码库。
? 生成进程内 COM 对象或 ActiveX 控件 (OCX)。
? 将 OLE 对象用作进程内 DLL。这一用法可改进 OLE 链接的性能。
? 使用控制面板扩展或使用某些类型的驱动程序。
要生成 DLL,请使用 DllMain 函数(而不是程序文件)替换 WinMain 函数。
要在 Win16 中导出函数,请将 FAR EXPORT 添加到所有导出的 DLL 函数(在 Win32 中不要求这样做)。许多 32 位编译器提供了函数声明符,例如 __declspec(dllexport) 和 __declspec(dllimport)。这些函数声明符出现在函数声明之前以代替调用。不过,定义必须仅指定 dllexport 属性。
分享到:
相关推荐
本案例涉及的是使用OLE技术并通过DLL(Dynamic Link Library)来操作Microsoft Excel。DLL是一种可重用代码的库,它能被多个程序调用,以实现功能扩展或共享服务。以下是关于"OLE操作EXCEL之DLL实现(C++)"的知识点...
ole2
ole32
**OleDb32.dll:Windows系统中的重要组件** 在Windows操作系统中,`OleDb32.dll` 是一个非常关键的动态链接库文件,它属于Microsoft OLE DB Provider for ODBC(Open Database Connectivity)的一部分。OLE DB是...
在这个过程中,我们需要利用Windows操作系统提供的COM接口,特别是ole32.dll库中的功能。ole32.dll是系统库,包含了一些用于处理对象链接和嵌入(OLE)的组件,其中包括了对文件属性摘要信息的访问。 首先,我们...
OleView OLE/COM OLE/COM对象浏览器
OLE/COM对象查看器是一款强大的工具,主要用于帮助开发者和系统管理员深入理解OLE(Object Linking and Embedding)和COM(Component Object Model)技术。OLE/COM是微软在Windows平台上实现对象间交互的重要机制,...
"ole查看dll依赖"是指通过特定工具来分析和查看DLL文件所依赖的其他DLL或系统组件的过程。这有助于理解程序运行时需要哪些资源,以及排查与DLL相关的错误或兼容性问题。 OLEView是一款由Microsoft提供的强大工具,...
“pb9dll.rar”可能包含的是PowerBuilder 9的动态链接库文件,这些DLL文件是PB运行时环境的一部分,用于支持特定的功能或者接口,比如数据窗口的某些特定操作或者与OLE DB的交互。 “tianjinbill”可能是一个示例...
在IT领域,OLE(Object Linking and Embedding)构件是一种重要的技术,用于在Windows操作系统中实现组件对象模型(COM)。OCX(OLE Control Extensions)是OLE的一部分,是可重用的用户界面控件,而DLL(Dynamic ...
OLE DB是微软提出的一种组件对象模型(COM),用于统一数据访问接口,支持多种数据源,包括数据库、文件系统等。 描述中提到了几个关键的动态链接库(DLL)文件,它们在Sybase OLEDB驱动中扮演着重要角色: 1. **...
这两个DLL文件是用于对象绑定的,主要处理与OLE(Object Linking and Embedding)和COM(Component Object Model)相关的操作。PB9允许开发者嵌入和链接其他应用程序的对象,例如Excel或Word文档,这些功能就依赖于...
OLE/COM对象查看器是一种强大的工具,用于检查和理解Microsoft的OLE(Object Linking and Embedding)和COM(Component Object Model)技术。这些技术在Windows应用程序开发中扮演着核心角色,尤其是在创建复合文档...
OLE(Object Linking and Embedding)和COM(Component Object Model)是Microsoft开发的两种核心技术,它们在Windows操作系统中广泛用于构建可重用的软件组件。这个压缩包包含了与这两个技术相关的资源,包括pip...
### PB OLE控件冲突解决方法 #### 一、引言 在使用PowerBuilder(简称PB)进行开发的过程中,有时会遇到添加OLE控件时程序崩溃的问题。这不仅影响了开发效率,还可能导致项目的延期。本文将详细介绍如何解决PB中...
【windows上默认没有,此处提供给大家...OLE/COM 对象查看器(oleview.exe)是在 Windows SDK 中提供的应用程序,它显示计算机上安装的 COM 对象及其支持的接口。 默认安装路径在C:\Program Files (x86)\Resource Kit
2. **获取Ole服务**:通过GetProcAddress函数获取ImageOle.dll中的关键函数指针,如`ImageList_LoadImage`,`CreateObject`等,这些函数将帮助我们在RichEdit中创建和管理表情对象。 3. **创建表情图像列表**:使用...
在IT行业中,OPC(OLE for Process Control)是一种标准接口,用于工业自动化系统中的数据交换。C#作为.NET框架下的编程语言,可以借助特定的库与OPC服务器进行交互。本篇文章将深入探讨如何利用OpcNetApi_dll和...