【Access基础进阶】OLE是什么?-nivenm
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> 综合其它


【Access基础进阶】OLE是什么?

发表时间:2013/6/18 8:48:26 评论(0) 浏览(15274)  评论 | 加入收藏 | 复制
   
摘 要:OLE
正 文:

上次我们讲到插入图片等非字符信息可以用OLE对象来实现 那么什么是OLE呢?今天我们来详细讲一讲。
    OLE(Object Linking and Embedding,对象连接与嵌入)。OLE不仅是桌面应用程序集成,而且还定义和实现了一种允许应用程序作为软件“对象”(数据集合和操作数据的函数)彼此进行“连接”的机制,这种连接机制和协议称为组件对象模型(Component Object Model),简称COM。OLE可以用来创建复合文档,复合文档包含了创建于不同源应用程序,有着不同类型的数据,因此它可以把文字、声音、图像、表格、应用程序等组合在一起。
    但对OLE的支持也带来了一些安全性问题,如在Outlook2002及以上版本中,黑客如果在邮件中嵌入危险OLE对象,就可以对其肆意伪装,有可能骗过用户导致安全问题。

OLE的版本
OLE1.0和OLE2.0 [1]
    迄今为止,有两种版本的OLE:OLE1.0和OLE2.0。当用户在OLE1.0 服务器中激活OLE对象,服务器程序在前台打开自己的窗体,并获得焦点。OLE窗体失去焦点,存在于单独的窗体之中。
    OLE2.0服务器采用“本地”(in place)激活方式。本地激活意味着服务器菜单与应用程序菜单要进行融合,服务器的状态条更换应用程序状态条,服务器的工具条更换应用程序工具条。OLE对象在应用程序窗体中进行编辑,但所有过程均由服务器处理。
    创建OLE对象的服务器决定了OLE的激活方式。如果一个OLE1.0的对象在OLE2.0 编译的应用程序中打开,它将采用OLE1.0的方式。
OLE类、文件、项目
    OLE类决定创建OLE对象的服务器。有些应用程序需要创建多种类型的OLE对象,例如应用程序同时链接或嵌入公式、图片等。OLE类也决定OLE对象所包含的数据类型,链接或嵌入对象均要定义OLE类。
    OLE文件是包含OLE对象数据的源文件。链接对象必须使用对象文件,因为链接对象在文件中保存。如果应用程序从已存在的源文件中创建嵌入对象,也要使用OLE文件。例如,如果链接到QuattiPro笔记本的
    OLE对象TUTOR.WBI存储在D:\DFFICE\QPW目录下,则OLE文件就是D:\DFFICE\QPW\TUTOR.WBI。值得注意的是OLE文件只能为链接对象所定义,而对于嵌入对象,只需定义OLE类。
    OLE项目是代表链接或嵌入数据的OLE文件中的一部分。当应用程序希望OLE对象包含比OLE文件小的数据块时,则必须使用OLE项目。
OLE应用程序的菜单
    OLE应用程序的菜单与其它应用程序的主菜单大体一致,如果应用程序中有支持本地激活的OLE 2.0对象,则要进行菜单融合。查阅OLE 服务器的资料可知道服务器是否支持本地激活。OLE应用程序菜单的GroupIndex属性决定融合菜单的位置,即融合菜单是更换主菜单,还是插入至应
用程序的主菜单中。
OLE工具条和状态条
当OLE对象被本地激活时,OLE服务器将试图用自己的工具条和状态条替换OLE应用程序的。如果应用
程序想要本地激活, 就应该在应用程序中编写相应的代码让服务器使用工具条和状态条。要做到这点,
必须:
● 设置工具条和状态条
● 在应用程序中加入状态条
通过修改面板部件的属性创建工具条和状态条。
当OLE对象被本地激活时,面板或其他对齐控制将与OLE服务器程序进行协调。 这意味
OLE服务器可以替换OLE应用程序窗体中任何对齐控制,但锁定的控制不能被替换。例如,
如果面板的align属性是alTop,alleft,alBottom,alIngh时,控制未锁定,OLE服务器可以替换。要使应用
程序的工具条、状态条不被替换,可将locked属性设置成真值
OLE自动化
OLE自动化是Windows应用程序操纵另一个程序的一种机制。OLE 2.0提供了一种方法来集成应用程序,这就是应用程序之间的命令操作。
利用OLE 2.0,程序员可以定义一组命令,使它们进入到其它程序中。这些命令可带参数。看起来很象应用程序在调用函数或过程一样。采用上述办法, 可以在人不参与的情况下,就能使得两个应用程序的相互作用。
被自动化的程序称作自动化对象或自动化服务器, 操作或自动化其他程序的应用程序称为自动化控制器或自动化客户器。


Access软件网交流QQ群(群号:198465573)
 
 相关文章
OLE DB Provider Microsoft Jet ole...  【宏鹏  2012/5/7】
“与 OLE 服务器或 ActiveX 控件通讯时出现问题”解决办...  【宏鹏  2012/6/27】
Microsoft Office Access遇到问题需要关闭。我...  【麥田  2012/12/10】
[Access文章](ACCESS与OLE服务器或ActiveX控...  【漏蛧尐魚℡  2013/2/21】
精用Boolean表达式,让代码再减肥  【缪炜  2013/5/31】
常见问答
技术分类
相关资源
文章搜索
关于作者

nivenm

文章分类

文章存档

友情链接