设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2047|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2005-12-4 20:46:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下载示例源码(http://www.vchelp.net/itbookreview/view_paper.asp?paper_id=596)





简介


       你也许曾在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_USERSoftwareMicrosoftOffice<TheOfficeApp>Addins<rogID>


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





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


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


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


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


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


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





具体实现


    下面,我们将以创建一个Outlook2000的内部COM插件为示例,向你一步步的展现如何最小化的创建一个Office2000的内部插件的全过程。效果图如下所示:





图一


    打开VC6.0,在新建工程中选中ATL COM Appwizard,在右侧工程名中输入OutlAddin,点击下一步,接受默认选项Dynamic Link Library(DLL)不变,可以选中下面的Allow merging of proxy-stub code(允许合并代理/占位)复选框选项,点击Finish(完成)按钮完成工程创建。





       接着,选取菜单Insert->New ATL Objec项,
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-2 14:21 , Processed in 0.110466 second(s), 24 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表