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

本文档详细介绍了Outlook COM加载项的背景知识和开发流程。首先概述了COM加载项的概念及其在Office 2000中的应用。接着讨论了决定开发COM加载项的因素,并解释了如何在注册表中进行必要的设置以确保加载项正常工作。
<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog01.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>

Outlook Add-in(COM加载项)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

技术指南

Revision History:

Version

Date

Creator

Description

<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899"><span lang="EN-US" style="FONT-FAMILY: Arial">1.0.0</span></chsdate>.1

<chsdate isrocdate="False" islunardate="False" day="9" month="3" year="2004"><span lang="EN-US" style="FONT-FAMILY: Arial">2004-3-9</span></chsdate>

郑昀

草稿

摘要

本文档详细介绍了编写Outlook Add-in插件的背景知识和开发过程。

第一章概述了Outlook Add-in插件的背景知识。

第二章详细介绍了Outlook Add-in插件的开发过程。

1 Outlook COM加载项的背景知识

摘要:本章概述了Outlook Add-in插件的背景知识。

1.1. Office 2000 COM加载项

COM加载项是可以用于Office 2000的动态连接库(.Dll)。

COM加载项被明确注册为要通过Office 2000应用程序来加载。因为COM加载项被设计为DLL,所以它们可以在与主控程序相同的进程中运行。

进程内加载项的好处是,可以有效访问主控程序的对象模型,这使得加载项可以快速地调用方法和属性或接收来自主控程序的事件。

1.2. 决定是否要编写COM加载项

三个测试问题来帮助你决定是否需要创建COM加载项:

Ø 在没有运行Outlook客户程序时,你需要接收事件吗?COM加载项的生存期是由Outlook控制的。当Outlook没有运行时,COM加载项不会运行。

Ø 性能是我们的应用程序的大问题吗?如果是,应该采用COM加载项,因为它被加载到Outlook进程中。但是注意不要再启动时执行大量查阅或数据检索。

Ø 你的应用程序是事件驱动的吗?

1.3. COM加载项的注册表设置

<chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899"><span style="mso-bookmark: _Toc67505313"><span lang="EN-US" style="FONT-FAMILY: Verdana">1.3.1</span></span></chsdate>.注册加载项

只有在正确注册了Office相应应用程序的内部COM插件时,才能被Office应用程序加载上。

通常,您需要在注册表中创建以下键值:

HKEY_CURRENT_USER\Software\Microsoft\Office\<theofficeapp>\Addins\<progid><p></p></progid></theofficeapp>

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

如果您希望确保我们的加载项总是被加载,并且每一位用户都可以访问它,那么您必须将加载项的ProgID注册到

\HKLM\

Software\

Microsoft\Office\Outlook\AddIns

键下。

如果您希望用户自己选择是否加载它,那么您可以将加载项的ProgID注册到

\HKCU\

Software\

Microsoft\Office\Outlook\AddIns

键下。

写入键中的信息包括下面的名称/值对:

Description(描述) 一个字符串,提供了COM加载项的简短描述。

FriendlyName(友好名称):一个字符串,是在“COM加载项对话框中显示的名称。

LoadBehavior(加载行为):一个整数的DWORD类型,指定COM加载项的加载方式。0表示断开、1表示连接、2表示启动时加载、8表示需要时加载,以及16表示首次连接。你可以组合不同值来创建不同类型的加载顺序。如,指定3,表示启动和连接时加载。

<chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899"><span style="mso-bookmark: _Toc67505314"><span lang="EN-US" style="FONT-FAMILY: Verdana">1.3.2</span></span></chsdate>.信任COM加载项

通过设置下面的注册表键下的DWORDDontTrustInstalledFiles,您可以指定是否信任机器上安装的所有COM加载项:

HKCU\

Software\

Microsoft\Office\9.0\

Outlook\Security

通过将DontTrustInstalledFiles指定为0,您可以指定Outlook信任安装的所有加载项。值1则指定不信任所有的加载项。

[版权声明:

第一章文字版权归《Programming Microsoft Outlook and Exchange》一书所有,该书作者Thomas Rizzo,特此声明]



Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=12754


Outlook 2003 addin<br> 赵果(apple) 2008年3月7日星期五<br><br><br>摘要:<br> 目前随着蓝牙、红外通信的不断发展,同步协议的应用变得越来越广泛。而同步引擎需要修改日志changelog的协助。本文的目的是记录用户对outlook2003联系人的操作日志,供同步引擎使用。<br>Outlook 2003 addin属于microsoft office com中的应用。目的是用于捕捉outlook2003 联系人(contacts)的增加、删除、修改的消息。<br><br>关键词:同步, changelog<br><br>工程介绍:<br>office com插件必须实现IDTExtensibility2接口。所有继承于IDTExtensibili ty2接口的COM插件必须实现5个方法:OnConnection,OnDisconnection,OnAddinUpdate,OnBeginShutDown,OnStartupComplete <br><br>1. 建立addin工程<br>(1) 启动VC++开发环境,新建个工程,选择ATL COM AppWizard,为工程命名为Outlook Addin,确定。选择Dynamic Link Library完成。然后,点击菜单“插入”->“新建ATL对象”,选择“Simple Object”,命名为Addin,选择Attributes标签,选中Support ISupportErrorInfo,其他选项默认。<br>(2) 在新建的类上右键implement Interface->AddTypelib->Microsoft Add-in Designer-> IDTExtensibility2。如下图所示:<br> <br>图1 添加outlook2003接口图示<br> <br>图2 添加addin designer接口图示<br><br> <br>图3 添加接口图示<br>(3) 添加注册表信息<br>向导实现了我们所选择的接口,并为IDTExtensibility2接口的5个方法提供了默认实现。现在,个基本的自动化COM对象就准备好了。通过向rgs文件添加注册条目,我们就可以用Outlook来注册这个插件。打开文件OAddin.rgs,在文件末尾插入以下代码:<br>HKCU_Software<br> {<br> Microsoft<br> {<br> Office<br> {<br> Outlook<br> {<br> Addins<br> {<br> 'OAddin.OAddin'<br> {<br> val FriendlyName = s 'SMIME Addin'<br> val Description = s 'ATLCOM Outlook Addin'<br> val LoadBehavior = d '00000003'<br> val CommandLineSafe = d '00000000' <br> }<br> }<br> }<br> }<br> }<br> }<br>}<br>注册条目看起来是很简单的。<br>1)LoadBehavior DWORD类型表明了Outlook装载COM插件的时机。我们的插件要在启动时装载,所以它的值设为3。LoadBehavior == 3 表示启动和连接时就自动运行;<br>• 0 = Disconnect - 不加载。<br>• 1 = Connected - 被加载。 <br>• 2 = Bootload - 宿主程序启动时加载。<br>• 8 = DemandLoad - 需要时加载。<br>• 16 = ConnectFirstTime - 只在下次运行时加载次。<br>2)FriendlyName: 字符串类型,插件的名称,将在相应程序的COM加载对话框中看到。<br> 3)Description: 字符串类型,插件的描述信息。<br> 4)CommandLineSafe: DWORD类型,命令行方式,可以设置为0x01()或0x00()。<br><br>2. 代码分析:<br>(1)需要向outlook注册add, modify, delete事件<br>A. 申明outlook events;<br> SINK_ENTRY_INFO( 1, __uuidof(Outlook::ItemsEvents), 0xf001, getOutlookaddItemsEvents, &OnItemAddInfo )<br> SINK_ENTRY_INFO( 2, __uuidof(Outlook::ItemsEvents), 0xf002, getOutlookmodifyItemsEvents, &OnItemModifyInfo )<br> SINK_ENTRY_INFO( 3, __uuidof(Outlook::ItemsEvents), 0xf003, getOutlookdeleteItemsEvents, &OnItemDeleteInfo )<br>0xf001:add 0xf002 modify 0xf003 delete<br><br>B. 在onconnection中注册事件;<br>outlookItem_add::DispEventAdvise( (IDispatch*)m_spItemsEvents_Add, &__uuidof(Outlook::ItemsEvents) );<br><br>C. 在ondisconnection中释放事件,也是在outlook关闭时停止捕捉消息;<br><br>(2)在outlook回调你的函数中实现changeglog功能。<br>Eg: void __stdcall CAddin::getOutlookaddItemsEvents( IDispatch* pdispItemsEvents )<br>{<br> CComQIPtr<Outlook::_ContactItem> ct(pdispItemsEvents);<br>}<br><br><br>结论:<br>本人文笔不好,请各大蝦不要见笑,详细还是见代码吧,但本人能够保证程序没有任何问题。<br>本人对office系列的产品有较深的见解,并具有浓厚的兴趣。目前在研究outlook express的事件捕捉,希望有跟我志同道合的朋友欢迎跟我联系起分享开发的快乐。QQ:35912467<br><br><br><br><br> 邮箱:my716917@sina.com<br> Hugo.zhao@mic.com.tw<br>电话:13458588397<br>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值