Outlook Add-in(COM加载项)技术指南(二)

系统 1789 0

Outlook Add-in (COM 加载项 )

技术指南

 

2 COM 加载项的开发过程

摘要 :本章节详细介绍了 Outlook Add-in 插件的开发过程。

 

2.1. 开发 COM 加载项

VB 中,首先需要引用“ Microsoft   Add-in Designer ”类型库,该库包含了一些 COM 加载项必需的界面。

其次 Visual Basic 需要 Implements IDTExtensibility 2

 

更多信息

一个 Office2000 下的内部 COM 插件必须实现一个 _IDTExtensibility2 派发接口。

_IDTExtensibility2 派发接口被定义在 MSADDin Designer 类型库 (MSADDNDR.dll/MSADDNDR.tlb) 中,它通常位于 < 盘符 >/Program Files/Common Files/Designer 下。

_IDTExtensibility2 接口中必须实现下面五个接口事件函数 ( 一般只需编写 OnConnection OnDisconnection 中代码 )

2.1.1 . IDTExtensibility2 事件背景知识

I DTExtensibility2 提供了 5 个将用于 COM 加载项的事件:

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

Ø          OnDisconnection    从内存中缷载插件时处理。

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

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

Ø          OnAddInsUpdate      COM 插件改变时处理。

下面我们一一介绍这些事件:

 

2.1.1 .1. OnConnection 事件

当第一次加载或者连接加载项时,例如 Outlook 启动时,或者当用户选择加载 COM 加载项时,将调用 OnConnection 事件。

OnConnection 事件是获取或存储稍候将要在代码中使用的 Outlook Application 队形最好的地方。

当发生 OnConnection 事件,将传递以下四个参数:

Application 参数:是 Outlook Application 的引用。

ConnectMode 参数: COM 加载项的加载方式。可以是以下常量中的一种: ext_cm_AfterStartup,ext_cm_CommandLine,ext_cm_External 或者 ext_cm_Startup 。当 Outlook 启动时连接我们的加载项,这个参数被设置为 ext_cm_Startup

AddInInst 参数:传递引用 COM 加载项当前实例的对象。

Custom() 参数:一个 Variant 数据类型的阵列,可以存储用户定义的加载项数。对于 Office2000 加载项,本参数忽略。

 

2.1.1 .2. OnDisconnection 事件

COM 加载项与应用程序断开连接时,将发生 OnDisconnection 事件。

当发生 OnDisconnection 事件,将传递以下两个参数:

RemoveMode 参数:指定加载项的断开方式,它可以被设置为以下常量: ext_dm_HostShutdown ext_dm_UserClosed 。顾名思义, ext_dm_HostShutdown 表示加载项通过关闭主机来断开; ext_dm_UserClosed 表示用户在 “COM 加载项 对话框中取消选中加载项的复选框或加载项的 Connect 属性被设置为 False 时断开加载项。

Custom() 参数:一个 Variant 数据类型的阵列,可以存储用户定义的加载项数。对于 Office2000 加载项,本参数忽略。

可以使用 OnDisconnection 事件来恢复对应用程序所做的更改,或者执行常规的应用程序来清理操作。

确保撤销您创建的所有检测对象,因为如果这些对象仍旧存在,那么 Outlook 将无法正常关闭。

 

2.1.1 .3. OnStartupComplete 事件

对于在启动主控应用程序时连接 COM 加载项的情况,当主机完成所有的启动例程时,将触发 OnStartupComplete 事件。如果用户在加载应用程序后从 “COM 加载项 选择加载项时,不会发生 OnStartupComplete 事件。在这种情况下,将发生 OnConnection 事件。

该事件过程是将一些全局和本地变量设置为与它们相应的 Outlook 对象的好地方。

 

2.1.1 .4. OnBeginShutdown 事件

当应用程序将要关闭并且在 OnDisconnection 事件之前调用时,将触发 OnBeginShutdown 事件。甚至在触发 OnBeginShutdown 事件之后,您仍然完全可以访问 Outlook 对象模型,因此您可以卸载对象之前保存注册表或者文件的设置,也可以保存对您的对象所做的修改。

 

2.1.1 .5. OnAddInsUpdate 事件

当更新 COM 加载项的列表时,将触发 OnAddInsUpdate 事件。可以使用本事件来确保您的加载项所以来的其他加载项是连接的。

 

2.1.2 . 我们实现的 IDTExtensibility2 事件

2.1.2 .1. IDTExtensibility2_OnConnection 事件

OnConnection 事件中,我们预先读取注册表,把默认参数读出来。

同时,通过调用

Set g_oApplication = Application

得到整个模型的根对象。

 

 

Disclaimers

Programmer’s Blog List

博客堂

小气的神

飞鹰手记   飞鹰手记之 .NET 专版

蝈蝈俊

思归

[MVPLeader] Grace Zhang

豆腐

跟随大象的舞步

Don Box's Blog

Eric.Weblog()

The .NET Guy

Blogs@asp.net

 

本文档仅供参考。本文档所包含的信息代表了在发布之日, zhengyun 对所讨论问题的当前看法, zhengyun 不保证所给信息在发布之日以后的准确性。

用户应清楚本文档的准确性及其使用可能带来的全部风险。可以复制和传播 本文档 ,但须遵守以下条款:

  1. 复制时不得修改原文,复制内容须包含所有页
  2. 所有副本均须含有 zhengyun 的版权声明以及所提供的其它声明
  3. 不得以赢利为目的对本文档进行传播




Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=12755


Outlook Add-in(COM加载项)技术指南(二)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论