示例: Comaddin.exe Office 2000 COM 加载项在 Visual c + + 中写入

文章翻译 文章翻译
文章编号: 230689 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

Comaddin.exe 是自解压可执行文件演示了 Office 2000 或 Office XP 组件对象模型 (COM) 加载项使用 Visual c + + 生成的。COM 加载项是专门用于一个或多个 Office 2000 或 Office XP 应用程序的上下文中运行的进程内 COM 服务器。COM 加载项提供了一种扩展 Office 环境的灵活、 高效的统一的方法。

使用任何编程语言,可以创建如 Visual Basic、 C/c + +、 C# 和 Office 2000 开发工具或 Office XP 开发人员的版本的 Microsoft Visual Basic 的 COM 组件的应用程序 (VBA) 的内置的 COM 加载项。

此示例演示如何构建一个 COM 加载项在 Visual c + + 中所必需的步骤。该示例创建一个基本外接程序外壳可以扩展以生成您自己 Office 的加载项。

更多信息

以下文件是可从 Microsoft 下载中心下载:
Comaddin.exe
1999 年 1 月 4日日,发布日期:

有关如何下载 Microsoft 支持文件的其他信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
119591如何从联机服务获得 Microsoft 支持文件
Microsoft 扫描此文件的病毒。Microsoft 使用该文件已过帐的日期上获得的最新病毒检测软件。该文件存储在安全性得到增强的服务器,这有助于防止未经授权的情况下对其进行更改文件上。

示例文件信息

Comaddin.exe 提取到一个文件夹,您选择的下列文件:
   FileName                    Size
   ----------------------------------------
   
   TestAddin.dsw               541 bytes
   TestAddin.dsp               4.11 KB 
   ComAddin.h                  6.19 KB
   ComAddin.cpp                8.38 KB
   ComAddin.def                205 bytes
   MyAddin.cpp                 10.6 KB
   MyAddinCF.cpp               2.18 KB
   BttnHandler.cpp             6.27 KB

IDTExensibility2

为 Office 加载项是一个 COM 对象,它必须支持 IDTExensibility2 接口 Microsoft 加载项设计器类型库 (Msaddndr.dll) 中所述。此接口已声明为您在 ComAddin.h,需没有导入。所有 COM 加载项会从该接口继承,并且必须实现其五种方法的每个:
  • OnConnection
  • OnDisconnection
  • OnAddInsUpdate
  • OnStartupComplete
  • OnBeginShutdown
当 COM 加载项首次加载时,QueryInterface 调用专为 IDTExtensibility2。如果将失败此调用该加载项是卸载项目。如果该调用成功,宿主应用程序将使用该引用返回到外接程序对其状态所做的更改的通知。每个方法的说明如下。

OnConnection

已连接的 COM 加载项时触发 OnConnection 事件。该加载项可能连接在启动时,结束用户或通过自动化。如果 OnConnection 返回 S_OK,该加载项是说要加载。如果返回任何其他值,宿主应用程序会立即释放它对该加载宏的引用,该对象将被破坏。

OnConnection 采用下列四个参数:
  • 应用程序的一对宿主应用程序的 IDispatch 接口的引用。
  • ConnectMode-一个常量,指定外接程序连接方式。
    • ext_cm_AfterStartup 的最终用户从 COM 加载项对话框中启动。
    • ext_cm_CommandLine-连接从命令行。
    • ext_cm_External-由外部应用程序通过自动连接。
    • ext_cm_Startup-由宿主应用程序启动时开始。可以通过在注册表中的设置控制此行为。
  • AddInInst-对此加载项在宿主应用程序对 COMAddIns 集合中引用的 COMAddIn 对象的引用。
  • 自定义-变型可包含用户定义的数据的数组。


OnDisconnection

COM 加载项断开连接时,它将从内存中卸载之前,将触发 OnDisconnection 事件。该加载项应执行任何资源清理操作,在这种情况并还原对宿主应用程序所做的任何更改。

OnDisconnection 采用以下两个参数:
  • RemoveMode-一个常量,用于指定如何加载项已断开连接。
    • ext_dm_HostShutdown-未连接宿主应用程序关闭时。
    • ext_dm_UserClosed-由最终用户或一个自动化控制器断开连接。
  • 自定义-变型可包含用户定义的数据的数组。


OnAddInsUpdate

已注册的 COM 加载项的设置更改时,将触发 OnAddInsUpdate 事件。也就 COM 加载项是安装或删除从宿主应用程序时, 将触发此事件。


OnStartupComplete 和 OnBeginShutdown

宿主应用程序已离开或正在进入一种状态,因为该应用程序忙装载或卸载本身从内存位置应避免用户交互时,OnStartupComplete 和 OnBeginShutdown 事件通知该加载项。如果您的加载项已连接,在启动过程中,如果您的加载项已断开连接由主机关机期间,则只会触发 OnBeginShutdown OnStartupComplete 将仅触发。

因为在这些事件引发时,宿主应用程序在用户界面是完全活动,它们可能是唯一的方法执行某些操作,否则将从 OnConnection 和 OnDisconnection 不可用。

注册 COM 加载项

除了普通的 COM 注册,COM 加载项需要向在其中可以安全地运行每个 Office 2000 应用程序注册其自身。若要向某一特定应用程序注册其自身,该加载项创建一个子项使用其 ProgID 作为在以下位置下的项的名称:

HKEY_CURRENT_USER\Software\Microsoft\Office\<appname>\Addins\<addinprogid>
该加载项可以提供在此密钥的位置为好记的显示名称和完整的说明的值。此外,该加载项应指定其所需的加载行为,使用 DWORD 值称为"LoadBehavior。此值确定如何加载项将加载由主机应用程序并由以下值的组合组成:
  • 0x00 = 断开-不加载。
  • 0x01 = 已连接-是否已加载。
  • 0x02 = bootload-负载对应用程序启动。
  • 0x08 = demandLoad-只在用户请求时才加载。
  • 0x16 = ConnectFirstTime-加载一次 (在下一次启动时)。
指定的典型值是 0x03 (已连接 | Bootload)。

加载项实现 IDTExtensibility2 还应指定一个 DWORD 值以指示它们是否安全的操作不支持用户界面的称为"CommandLineSafe"。值为 0x00 表示 False,0x01 为 True。因为此示例显示一个消息框,它是不安全的命令行执行的因此将值设置为 0x00。

入门 》

若要开始编写加载,编译该示例项目、 上该生成 DLL 运行 regsvr32.exe,然后启动 Microsoft Word、 Excel、 Powerpoint 和/或 Frontpage 2000。您应该看到一个对话框打开时加载该加载宏,显示为"hello",并告诉您它处于哪个应用程序。

(c) Microsoft Corporation 1999,保留的所有权限。陈德键。 Taylor,Microsoft 公司的贡献。

属性

文章编号: 230689 - 最后修改: 2004年8月9日 - 修订: 5.4
这篇文章中的信息适用于:
  • Microsoft Excel 2000 标准版
  • Microsoft Visual C++ 5.0 企业版
  • Microsoft Visual C++ 6.0 企业版
  • Microsoft Visual C++ 5.0 专业版
  • Microsoft Visual C++ 6.0 专业版
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer Edition
  • Microsoft FrontPage 2002 标准版
  • Microsoft FrontPage 2000 标准版
  • Microsoft PowerPoint 2002 标准版
  • Microsoft PowerPoint 2000 标准版
  • Microsoft Word 2002 标准版
  • Microsoft Word 2000 标准版
  • Microsoft Excel 2002 标准版
  • Microsoft Outlook 2000
  • Microsoft Outlook 2002 标准版
关键字:?
kbmt kbdownload kbautomation kbfile kbinfo kbsample KB230689 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 230689
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com