Office 2000下内部COM插件的编程实现

简介

你也许曾在Office2000下的Word2000、Access2000、Excel2000、PowerPoint2000等软件中的工具条或菜单条资源中,看到一些其它软件加入的新的自定义工具条按钮或菜单条,当点击它们时,会有其不同的响应发生。下面,让我们也来实现这些功能,需要说明的是,在这里我们不用VB/VBA来实现它,而是用VC6中所带ATL(活动模板库)3.0来开发具有这种效果的Office2000内部COM插件。在Office2000中,不管是Word2000、Access2000、Excel120000、PowerPoint2000还是Outlook2000等,它们COM插件的编程方法及步骤都是极其相似的(除注册表中键值及导入相应类型库不同外)。

基础知识

一个Office2000下的内部COM插件必须实现一个_IDTExtensibility2派发接口,_IDTExtensibility2派发接口被定义在MSADDin Designer类型库(MSADDNDR.dll/MSADDNDR.tlb)中,通常位于<盘符>/Program Files/Common Files/Designer下。_IDTExtensibility2接口中必须实现下面五个接口函数(一般只需编写OnConnection和OnDisconnection中代码),分别如下:

1. OnConnection: 装载插件到内存时处理(可以通过自动化在程序启动时自动装载插件)。

2. OnDisconnection: 从内存中缷载插件时处理。

3. OnAddinsUpdate: COM插件改变时处理。

4. OnStartupComplete: 当应用程序启动时插件刚装载完成时处理。

5. OnBeginShutdown: 当应用程序关闭时插件刚缷载完成时处理。

注册插件

只有在正确注册了相应应用程序的内部COM插件时,才能被其应用程序加载上。需要在注册表中创建以下键值:

HKEY_CURRENT_USER\Software\Microsoft\Office\<TheOfficeApp>\Addins\<ProgID>

其中,TheOfficeApp表示相应程序名,如:Word、Outlook等,ProgID表示内部COM插件程序的唯一标识符的字符串表示形式,如:Outlook2000Addin.Addin等。

ProgID键值下主要创建以下四个键值:

1. FriendlyName: 字符串类型,插件的名称,将在相应程序的COM加载对话框中看到。

2. Description: 字符串类型,插件的描述信息。

3. LoadBehavior: DWORD类型,决定插件将以什么形式被装载。当其值为0x03时,为应用程序装载时被自动装载(一般使用此值)、当其值为0x08时,为用户控制激活装载。

4. CommandLineSafe: DWORD类型,命令行方式,可以设置为0x01(真)或0x00(假)。

其它键值的完整描述可参看最新MSDN。

时间: 2024-12-29 09:38:06

Office 2000下内部COM插件的编程实现的相关文章

Access2000下内部COM插件的编程实现

简介 在这里,我们仍然使用VC6中的ATL来实现Access2000下的内部COM插件,至于其基本原理和详细的实现方法及步骤,可以参看前面我的文章< Office2000下内部COM插件的编程实现>等,这里只重点说明它和其它Office2000中内部COM插件(如:Word2000.Excel2000.PowerPoint2000.Outlook2000)实现的不同之处,文章及示例代码都可以在http://code.cnblogs.com网站中找到.下面是Access2000内部COM插件示例

Word2000/XP中内部COM插件的编程实现

简介 Office2000/XP中Word下的内部COM插件的实现方法和前面我的文 章< Office2000下内部COM插件的编程实现>中介绍的示例Outlook2000下内部 COM插件的实现方法与步骤基本相同,在这里,我想不用再重复哆嗦大部分前面 文章里已经讲过的内容了,只将重点放在它们间实现的不同点上,有兴趣的朋友 可以参看前面这篇文章,然后再看这篇文章一定会事半功倍的.本文章提供的 Word内部COM插件示例源码运行后的效果图如下所示: 具体实现 下面,让我们来看 看它们间(Word

VC++内部COM插件的编程实现

一.闲聊 首先,在这里向前段时间没来得及回复你们问题的朋友们说 声对不起了,这段时间工作实在太忙,我快倒!哈哈!好了,让我们转入正题, 今天要谈的话题是COM,稍微深入一点,不知道大家用过C++Test或者Visual Assistant(可到VC知识库工具栏目下载)之类的软件没有,它们都有个非常引 人注目的功能,那就是把它们自身嵌入到VC开发环境中去.这个功能让我痴迷不 已,原因只有一个:我想做一个可以嵌入VC开发环境的VC工程解析器(VC/Delphi 工程解析器已被收录在VC知识库在线杂志

Excel2000/XP和PowerPoint2000/XP内部COM插件的实现

一.简介 Excel2000和PowerPoint2000下内部COM插件的编程实现这篇文章,实际上是< Office2000下内部COM插件的编程实现> 和< Word2000/XP中内部COM插件的编程实现>二篇文章的续篇.采用上篇文章< Word2000/XP中内部COM插件的编程实现>中写作风格,不再重复哆嗦大部分前面文章里已经讲过的内容了,只将重点放在它们间实现的不同点上,有兴趣的朋友可以参看前面二篇文章,然后再看这篇文章及示例源码一定会倍感轻松.本文章提供的

Programming MS Office 2000 Web Components第一章第三节

web 哪里可以使用这些组件? 既然Office Web Components都是COM控件,您会很自然的希望它们能够在任何自称是COM控件容器的环境中工作.然而,理论和现实不总是一致的,尤其在软件世界里.微软公司创造了许多能够包含控件的环境(我们小组脱口就能说出了16个),而别的公司创造了许多其它的环境. 为了避免Office的测试小组发狂,我们针对不同的容器,进行不同的级别的Office Web Components测试.首先,我们挑选出那些我们认为人们使用的最多的容器,进行了充分的测试.然

Programming Microsoft Office 2000 Web Components第一章

web 译者说明:<Programming Microsoft Office 2000 Web Components>是我从网上下载的一本讲述OWC技术的英文电子书,之所以要翻译这本书,是基于以下几个想法:1.阅读英文资料时常常会不求甚解,忽略很多细节和不容易阅读的句子,如果强迫自己逐句的翻译出来,则会对原来的英文资料有更加全面.详细和深刻的了解.2.可以锻炼自己在英语方面的能力.3.能够给其他需要这方面的资料的朋友提供一定的帮助. 这是本人初次进行这方面的工作,本人的技术和英文能力都很一般,

在Windows 2000下优化Oracle9i性能

oracle|window|性能|优化 Windows 2000下的Oracle性能优化需要考虑磁盘I/O.CPU.网络子系统.内存几个子系统,这里着重介绍Oracle在Windows 2000环境下的内存调整. 优化磁盘配置 Oracle是一个磁盘I/O强烈的应用,要确保你恰当地配置磁盘和文件系统: 在磁盘上建立数据文件前首先运行磁盘碎片整理程序 为了安全地整理磁盘碎片,需关闭打开数据文件的实例,并且停止服务.如果你有足够的连续磁盘空间建立数据文件,那么你就很容易避免数据文件产生碎片. 不要使

Windows 2000下优化Oracle9i性能

oracle|window|性能|优化 Windows 2000下的Oracle性能优化需要考虑磁盘I/O.CPU.网络子系统.内存几个子系统,这里着重介绍Oracle在Windows 2000环境下的内存调整. 优化磁盘配置 Oracle是一个磁盘I/O强烈的应用,要确保你恰当地配置磁盘和文件系统: 在磁盘上建立数据文件前首先运行磁盘碎片整理程序 为了安全地整理磁盘碎片,需关闭打开数据文件的实例,并且停止服务.如果你有足够的连续磁盘空间建立数据文件,那么你就很容易避免数据文件产生碎片. 不要使

ASP.NET MVC下的四种验证编程方式[续篇]

原文:ASP.NET MVC下的四种验证编程方式[续篇] 在<ASP.NET MVC下的四种验证编程方式>一文中我们介绍了ASP.NET MVC支持的四种服务端验证的编程方式("手工验证"."标注ValidationAttribute特性"."让数据类型实现IValidatableObject或者IDataErrorInfo"),那么在ASP.NET MVC框架内部是如何提供针对这四种不同编程方式的支持的呢?接下来我们就来聊聊这背后的