设为首页 收藏本站
查看: 1171|回复: 0

[经验分享] Outlook Add-in(COM加载项)技术指南(二)

[复制链接]

尚未签到

发表于 2015-9-14 10:34:51 | 显示全部楼层 |阅读模式
Outlook Add-in(COM加载项)

技术指南

    

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


2.1.开发COM加载项
在VB中,首先需要引用“Microsoft  Add-in Designer”类型库,该库包含了一些COM加载项必需的界面。
其次,Visual Basic中需要“Implements IDTExtensibility2”。

更多信息
一个Office2000下的内部COM插件必须实现一个_IDTExtensibility2派发接口。
_IDTExtensibility2派发接口被定义在MSADDin Designer类型库(MSADDNDR.dll/MSADDNDR.tlb)中,它通常位于<盘符>/Program Files/Common Files/Designer下。
_IDTExtensibility2接口中必须实现下面五个接口事件函数(一般只需编写OnConnection和OnDisconnection中代码)。
2.1.1. IDTExtensibility2事件背景知识
IDTExtensibility2提供了5个将用于COM加载项的事件:
&Oslash;         OnConnection      装载插件到内存时处理(可以通过自动化在程序启动时自动装载插件)。
&Oslash;         OnDisconnection   从内存中缷载插件时处理。
&Oslash;         OnStartupComplete 当应用程序启动时插件刚装载完成时处理。
&Oslash;         OnBeginShutdown  当应用程序关闭时插件刚缷载完成时处理。
&Oslash;         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不保证所给信息在发布之日以后的准确性。
用户应清楚本文档的准确性及其使用可能带来的全部风险。可以复制和传播本文档,但须遵守以下条款:

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




Trackback: http://tb.blog.iyunv.com/TrackBack.aspx?PostId=12755

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-113429-1-1.html 上篇帖子: [OutLook] Find all messages with attachments 下篇帖子: 卸载Office 2007 Beta2后,Outlook 2003无法启动的解决方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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