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

作者:徐景周

下载示例源码(http://www.vchelp.net/itbookreview/view_paper.asp?paper_id=735)

简介

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

具体实现

下面,让我们来看看如何最小化修改原基础上的源码来实现一个Excel2000和PowerPoint2000下COM插件,建立工程及其它步骤可根据前面二篇文章中介绍的内容进行操作。在这里,除了下面介绍的源码内容需要改动处,其它部分的源码内容基本上和前面我讲的文章中的示例源码相同,一般并不需要改动(除非你有其它方面的特殊需求)。

第一点:在文件中Stdafx.h中的类型的导入库部分源码将有所不同,可将源文件中源码替换为下面部分既可。

l         Excel2000下:

/

/* 导入工程所需Office2K及Excel2K类型库,其*/

/* 中路径可根据安装路径自行设定, jingzhou xu   */

/*******************  Office 2000下导入使用 ************************/

#import "E://Program Files//Microsoft Office//Office//mso9.dll" rename_namespace("Office")

using namespace Office;

#import "D://Program Files//Common Files//Microsoft Shared//VBA//VBA6//VBE6EXT.olb" rename_namespace("VBE6")

using namespace VBE6;

// Excel导入库

#import "E://Program Files//Microsoft Office//Office//EXCEL9.olb" rename("RGB","RGBEx"),rename("DialogBox","DialogBoxEx"),named_guids,rename_namespace("MSExcel")

using namespace MSExcel;

l         PowerPoint2000下:

/

/* 导入工程所需Office2K及PowerPoint2K类型库,其*/

/* 中路径可根据安装路径自行设定, jingzhou xu   */

/*******************  Office 2000下导入使用 ************************/

#import "E://Program Files//Microsoft Office//Office//mso9.dll" rename_namespace("Office")

using namespace Office;

#import "D://Program Files//Common Files//Microsoft Shared//VBA//VBA6//VBE6EXT.olb" rename_namespace("VBE6")

using namespace VBE6;

// PowerPoint导入库

#import "E://Program Files//Microsoft Office//Office//MSPPT9.OLB" named_guids,rename_namespace("MSPPT")

using namespace MSPPT;

第二点:注册类型信息有所不同(*.rgs),将文件rgs中内容的下半部分修改如下所示:

l         Excel2000下:

HKCU

{

Software

{

Microsoft

{

Office

{

Excel

{

Addins

{

'ExcelAddin.Excel2000Addin'

{

val FriendlyName = s 'Excel20002000 Addin'

val Description = s 'Excel20002000下插件'

val LoadBehavior = d '00000003'

val CommandLineSafe = d '00000001'

}

}

}

}

}

}

}

l         PowerPoint2000下:

HKCU

{

Software

{

Microsoft

{

Office

{

PowerPoint

{

Addins

{

'PPTAddin.PowerPoint2000Addin'

{

val FriendlyName = s 'PowerPoint2000 Addin'

val Description = s 'PowerPoint2000下插件'

val LoadBehavior = d '00000003'

val CommandLineSafe = d '00000001'

}

}

}

}

}

}

}

第三点:Excel2000和PowerPoint2000中没有ActiveExplorer对象,所以不必再经过它获取CommandBars,直接从_Application中获得CommandBars对象进行操作。修改部分如下面源码所示:

l         Excel2000下:

// 装缷插件时处理

STDMETHOD(OnConnection)(IDispatch * Application, ext_ConnectMode ConnectMode, IDispatch * AddInInst, SAFEARRAY * * custom)

{

CComPtr < Office::_CommandBars> spCmdBars;

// Excel应用接口_Application

CComQIPtr<MSExcel::_Application> spApp(Application);

ATLASSERT(spApp);

// 获取CommandBars接口

HRESULT hr = spApp->get_CommandBars(&spCmdBars);

if(FAILED(hr))

return hr;

ATLASSERT(spCmdBars);

// ……

}

l         PowerPoint2000下:

// 装缷插件时处理

STDMETHOD(OnConnection)(IDispatch * Application, ext_ConnectMode ConnectMode, IDispatch * AddInInst, SAFEARRAY * * custom)

{

CComPtr < Office::_CommandBars> spCmdBars;

// Word应用接口_Application

CComQIPtr<MSPPT::_Application> spApp(Application);

ATLASSERT(spApp);

// 获取CommandBars接口

HRESULT hr = spApp->get_CommandBars(&spCmdBars);

if(FAILED(hr))

return hr;

ATLASSERT(spCmdBars);

// ……

}

好了,Excel2000、PowerPoint2000、Word2000和Outlook2000下的内部COM插件实现的不同点主要就这些了,具体实现的详细代码可参看几篇文章所附带示例源码,内有详细注释。

参考文献:

Office2000下内部COM插件的编程实现 -- 徐景周(译者)

Word2000/XP中内部COM插件的编程实现 – 徐景周

ATL开发指南(第二版) -- Tom Armstrong & Ron Patton

联系方式:

编者EMAIL:jingzhou_xu@163.com

未来工作室(Future Studio)

Excel2000/XP和PowerPoint2000/XP下内部COM插件的实现相关推荐

  1. Windows XP SP3 IIS HTTP 500 - 内部服务器错误解决

    Windows XP SP3 IIS 安装包下载 http://222.76.208.4/upload/IIS_XPSP3.rar 当系统更新sp3后,在安装iis,就会提示你插入sp3光盘,由于现在 ...

  2. 实现虚拟xp与主机xp之间的文件共享

    实现虚拟xp与主机xp之间的文件共享 1.首先需要运行虚拟机.单击菜单栏的虚拟机--设置. 2.打开虚拟机设置对话框.单击选项--共享文件夹,选择 总是启用(或在下次电源关闭或挂起前启用),然后点击添 ...

  3. 微软官方自己精简的XP系统--WIN XP基础版WinFLPCs

    微软官方自己精简的XP系统--WIN XP基础版WinFLPCs Windows Fundamentals For Legacy PCs 未来发展方向 前言 XP 基础版",以下简称:Win ...

  4. Windows7 XP兼容模式(XP Mode)安装必要步骤精解

    注:此文为转载内容,原文地址:http://blog.sina.com.cn/s/blog_5e9e98210101au6b.html Windows7 XP兼容模式(XP Mode)安装必要步骤精解 ...

  5. vmlite linux版本,vmlite 安装 xp mode及xp、win7、linux的虚拟磁盘到d盘的方法

    vmlite 安装 xp mode及xp.win7.linux的虚拟磁盘到d盘的方法 (15页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积 ...

  6. 360安全卫士将推“XP专版” 确保XP用户电脑安全

    4月8日,微软将停止对WindowsXP系统的服务支持.此后XP用户的电脑仍能正常使用,但微软将不再为XP系统漏洞提供安全补丁. 国外专家:继续用XP,10分钟内就会感染***病毒 国外的网络工程师M ...

  7. 什么是XP,介绍XP,敏捷扫盲XP(Extreme Programming)。

    一 什么是XP?.XP是Extreme Programming的缩写,中文译为极限编程.极限编程是一种强调团队工作的工作方式,它是多种敏捷方式的一种. 二 在XP中,常见的工程实践有: 1.测试驱动开 ...

  8. chosen.jquery.js 有搜索功能、多选功能的下拉框插件

    chosen.jquery.js 有搜索功能.多选功能的下拉框插件 官方源码:  https://github.com/harvesthq/chosen 该源码中的样例index.html有该插件的详 ...

  9. Mac下导出chrome插件

    Mac下导出chrome插件 chrome最强大的功能之一就是插件,有时候需要给小伙伴们共享一些插件,所以需要将自己chrome中的插件打包,在mac下打包插件还是挺费劲的,在此记录. 打开chrom ...

最新文章

  1. PicoBlaze 设计实例
  2. shell脚本中获取当前所在目录地址
  3. wxDrawjs循环添加图形后增加标识记录点击的是哪个的另类方法
  4. Oracle 杀死session的方法
  5. php的验证码要gd库,PHP利用GD库实现一个简单的验证码
  6. 为您的机器配置开发环境
  7. Linux优盘挂载卸载以及文件查看
  8. Django form choices, placeholder
  9. 拼多多11.11:无定金、不预售,“好牌子、好实惠”底价直降
  10. V - 不容易系列之(4)――考新郎(第二季水)
  11. Linux5常规网络配置,求解red hat linux enterprise 5 网络配置问题
  12. 快速部署简单私有云CloudStack(下)
  13. hashmap在jdk7和8线程不安全的区别
  14. 懒人工作源码分析(1)
  15. 从Java新特性看Java的未来
  16. 超强扒站神器:SiteSucker Pro for Mac(4.1.3多语言)
  17. 单片机课设中期报告_本科论文中期报告
  18. 如何用Java写一个规范的http接口?
  19. .NET面试宝典130道经典面试真题及答案
  20. 计算机实习生听课记录,舞蹈课实习听课记录

热门文章

  1. mysql连接串_[MySQL] - MySQL连接字符串总结
  2. 北科-数学跨专业考本校871计算机专硕经验贴
  3. 年终总结-这世界很大
  4. openCV Contours详解
  5. 戴尔微型计算机主机怎么拆,电脑主机您会拆吗?主机拆机详解 每一步都清清楚楚的告诉您...
  6. Hessian的基本使用
  7. Facebook HHVM 和 Hack 手册----1.什么是Hack?
  8. Powerline 字体安装 for Windows / Mac / Ubuntu
  9. jsoup 1.6.2发布 最棒的Java HTML解析器
  10. java如何解决缓存问题_4种常见的缓存问题及解决方案详解