ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:23.02KB ,
资源ID:9093141      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9093141.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Outlook COM加载项.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Outlook COM加载项.docx

1、Outlook COM加载项1 Outlook COM加载项的背景知识摘要:本章概述了Outlook Add-in插件的背景知识。1.1. Office 2000 COM加载项COM加载项是可以用于Office 2000的动态连接库(.Dll)。COM加载项被明确注册为要通过Office 2000应用程序来加载。因为COM加载项被设计为DLL,所以它们可以在与主控程序相同的进程中运行。进程内加载项的好处是,可以有效访问主控程序的对象模型,这使得加载项可以快速地调用方法和属性或接收来自主控程序的事件。1.2. 决定是否要编写COM加载项三个测试问题来帮助你决定是否需要创建COM加载项: 在没有运

2、行Outlook客户程序时,你需要接收事件吗?COM加载项的生存期是由Outlook控制的。当Outlook没有运行时,COM加载项不会运行。 性能是我们的应用程序的大问题吗?如果是,应该采用COM加载项,因为它被加载到Outlook进程中。但是注意不要再启动时执行大量查阅或数据检索。 你的应用程序是事件驱动的吗?1.3. COM加载项的注册表设置1.3.1.注册加载项只有在正确注册了Office相应应用程序的内部COM插件时,才能被Office应用程序加载上。通常,您需要在注册表中创建以下键值:HKEY_CURRENT_USERSoftwareMicrosoftOfficeAddins其中,

3、TheOfficeApp表示相应程序名,如:Word、Outlook等,ProgID表示内部COM插件程序的唯一标识符的字符串表示形式,如:Outlook2000Addin.Addin等。如果您希望确保我们的加载项总是被加载,并且每一位用户都可以访问它,那么您必须将加载项的ProgID注册到HKLM Software MicrosoftOfficeOutlookAddIns键下。如果您希望用户自己选择是否加载它,那么您可以将加载项的ProgID注册到HKCU Software MicrosoftOfficeOutlookAddIns键下。写入键中的信息包括下面的名称/值对:Descriptio

4、n(描述): 一个字符串,提供了COM加载项的简短描述。FriendlyName(友好名称):一个字符串,是在“COM加载项”对话框中显示的名称。LoadBehavior(加载行为):一个整数的DWORD类型,指定COM加载项的加载方式。0表示断开、1表示连接、2表示启动时加载、8表示需要时加载,以及16表示首次连接。你可以组合不同值来创建不同类型的加载顺序。如,指定3,表示启动和连接时加载。1.3.2.信任COM加载项通过设置下面的注册表键下的DWORD值DontTrustInstalledFiles,您可以指定是否信任机器上安装的所有COM加载项:HKCUSoftwareMicrosoft

5、Office9.0OutlookSecurity通过将DontTrustInstalledFiles指定为0,您可以指定Outlook信任安装的所有加载项。值1则指定不信任所有的加载项。版权声明:第一章文字版权归Programming Microsoft Outlook and Exchange一书所有,该书作者Thomas Rizzo,特此声明2 COM加载项的开发过程摘要:本章节详细介绍了Outlook Add-in插件的开发过程。2.1.开发COM加载项在VB中,首先需要引用“Microsoft Add-in Designer”类型库,该库包含了一些COM加载项必需的界面。其次,Visu

6、al Basic中需要“Implements IDTExtensibility2”。更多信息一个Office2000下的内部COM插件必须实现一个_IDTExtensibility2派发接口。_IDTExtensibility2派发接口被定义在MSADDin Designer类型库(MSADDNDR.dll/MSADDNDR.tlb)中,它通常位于/Program Files/Common Files/Designer下。_IDTExtensibility2接口中必须实现下面五个接口事件函数(一般只需编写OnConnection和OnDisconnection中代码)。2.1.1. IDTEx

7、tensibility2事件背景知识IDTExtensibility2提供了5个将用于COM加载项的事件: OnConnection 装载插件到内存时处理(可以通过自动化在程序启动时自动装载插件)。 OnDisconnection 从内存中缷载插件时处理。 OnStartupComplete 当应用程序启动时插件刚装载完成时处理。 OnBeginShutdown 当应用程序关闭时插件刚缷载完成时处理。 OnAddInsUpdate COM插件改变时处理。下面我们一一介绍这些事件:2.1.1.1. OnConnection事件当第一次加载或者连接加载项时,例如Outlook启动时,或者当用户选择

8、加载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_Star

9、tup。AddInInst参数:传递引用COM加载项当前实例的对象。Custom()参数:一个Variant数据类型的阵列,可以存储用户定义的加载项数。对于Office2000加载项,本参数忽略。2.1.1.2. OnDisconnection事件当COM加载项与应用程序断开连接时,将发生OnDisconnection事件。当发生OnDisconnection事件,将传递以下两个参数:RemoveMode参数:指定加载项的断开方式,它可以被设置为以下常量:ext_dm_HostShutdown或ext_dm_UserClosed。顾名思义,ext_dm_HostShutdown表示加载项通过关

10、闭主机来断开;ext_dm_UserClosed表示用户在“COM加载项”对话框中取消选中加载项的复选框或加载项的Connect属性被设置为False时断开加载项。Custom()参数:一个Variant数据类型的阵列,可以存储用户定义的加载项数。对于Office2000加载项,本参数忽略。可以使用OnDisconnection事件来恢复对应用程序所做的更改,或者执行常规的应用程序来清理操作。确保撤销您创建的所有检测对象,因为如果这些对象仍旧存在,那么Outlook将无法正常关闭。2.1.1.3.OnStartupComplete事件对于在启动主控应用程序时连接COM加载项的情况,当主机完成所

11、有的启动例程时,将触发OnStartupComplete事件。如果用户在加载应用程序后从“COM加载项”选择加载项时,不会发生OnStartupComplete事件。在这种情况下,将发生OnConnection事件。该事件过程是将一些全局和本地变量设置为与它们相应的Outlook对象的好地方。2.1.1.4.OnBeginShutdown事件当应用程序将要关闭并且在OnDisconnection事件之前调用时,将触发OnBeginShutdown事件。甚至在触发OnBeginShutdown事件之后,您仍然完全可以访问Outlook对象模型,因此您可以卸载对象之前保存注册表或者文件的设置,也可

12、以保存对您的对象所做的修改。2.1.1.5.OnAddInsUpdate事件当更新COM加载项的列表时,将触发OnAddInsUpdate事件。可以使用本事件来确保您的加载项所以来的其他加载项是连接的。2.1.2.我们实现的 IDTExtensibility2事件2.1.2.1. IDTExtensibility2_OnConnection事件OnConnection事件中,我们预先读取注册表,把默认参数读出来。同时,通过调用Set g_oApplication = Application得到整个模型的根对象。Disclaimers:本文档仅供参考。本文档所包含的信息代表了在发布之日,zhen

13、gyun对所讨论问题的当前看法,zhengyun不保证所给信息在发布之日以后的准确性。 用户应清楚本文档的准确性及其使用可能带来的全部风险。可以复制和传播本文档,但须遵守以下条款: 1.复制时不得修改原文,复制内容须包含所有页 ; 2.所有副本均须含有 zhengyun的版权声明以及所提供的其它声明 ; 3.不得以赢利为目的对本文档进行传播 。2.1.2.2. IDTExtensibility2_OnDisconnection事件OnDisconnection事件中,我们销毁所有的全局对象。2.1.2.3. IDTExtensibility2_OnStartupComplete事件OnStar

14、tupComplete事件主要的工作就是,创建工具栏和按钮,如果它们不存在的话。我们首先搜索Explorer对象的CommandBars集合,以察看我们的“短信速递”工具栏是否存在。如果找到该工具栏,则只需使之可见。如果没有找到我们的工具栏,那么我们将创建工具栏:通过传递命令栏的名称及Temporary参数,代码将把新的CommandBar对象添加到CommandBars集合中。Temporary参数指出Outlook应该在Outlook会话间保持命令栏。然后,代码开始创建命令上的按钮。为了创建按钮,代码将使用CommandBars对象的Controls集合。然后,代码将把2个按钮控件添加到集

15、合中。控件类型是由msoControlButton常量来标识的。代码还将为所有控件传递ID 1;表示这个控件是自定义控件而不是内置控件。代码还将传递Temporary参数并将它设置为False,以使Outlook在会话间保持按钮。代码接收到来自于Control集合Add方法的CommandBarButton对象之后,它将开始设置CommandBarButton对象的属性: Caption属性:控件的默认屏幕提示; FaceId属性:指定按钮的外观。 Style属性:比如,显示按钮外观和标题文本的msoButtonIconAndCaption。您看到,我们前面声明g_oCreateSMSBHan

16、dler使用WithEvents关键词,被声明为Office.CommandBarButton,它指出g_oCreateSMSBHandler用来响应CommandBarButton的事件。2.1.2.4. IDTExtensibility2_OnBeginShutdown事件OnBeginShutdown事件中,我们销毁所有的全局对象。2.2.全局引用的变量在VB中,我们需要使用一些Outlook中的对象模型。下面我们一一列出:2.2.1.Application对象这是整个模型的根对象。根对象提供对其他对象模型的访问。在 Outlook 中使用 VBA 时,Application 对象被隐含

17、声明,这样您可以选择是否使用 Application 关键字。2.2.2.NameSpace对象用于访问存储项目(如文件夹)。“MAPI”是唯一可以使用的名称空间。2.2.3.Explorer对象这是显示 Outlook 项目集合的默认界面。每个不同的项目类型都有不同的浏览器。2.2.4.CommandBars集合在Office应用程序中,尽管菜单和工具栏按钮看上去不太一样,但实质上它们是相同类型的对象。CommandBars集合包含程序中的所有命令条,如:工具条和菜单条。每一个CommandBars集合都有一个CommandBar对象和它对应,CommandBar 对象可以包含其它的 Com

18、mandBar 对象,这些对象是作为按钮或菜单命令来用的。每一个CommandBar都将通过CommandBarControls 对象被引用,CommandBarControls又可以包含一组CommandBarControl对象。每一个CommandBarControl可以包含一个CommandBar对象,并可以通过它来存取控件属性。每一个CommandBarControl对象,实际是对应CommandBarControls中的控件集合。CommandBarControl可以有三种表现形式: 弹出式 (CommandBarPopup): 相当于菜单条的一个菜单项? 组合框(CommandBa

19、rComboBox):类似于工具条中组合框控件。它包括一个工具栏和紧接着工具栏的一个下拉箭头。单击该按钮,将显示出更多的带图标的菜单命令。 按钮(CommandBarButton):相当于标准的工具栏按钮,即带有图标的按钮。2.2.5.Items集合Items对象集合包括指定文件夹中所有Item条目对象。其中,Item对象用于包含特定的 Outlook 数据,例如电子邮件消息、约会或联系人。 Outlook.AppointmentItem 日程的条目对象 Outlook.ContactItem 联系人的条目对象 Outlook.MailItem 邮件的条目对象 Outlook.NoteItem

20、 便笺的条目对象2.2.6.Selection集合 Selection对象包括在用户界面中用户选定的项目组。2.3.处理按钮事件在VB中,我们需要填写类似于“g_oCreateSMSBHandler_Click”函数,对按钮的点击作出响应。下面我们一一列出两个按钮的事件:2.3.1. g_oCreateSMSBHandler_Click事件这个按钮的名称是“创建短信”。“联系人列表”将从您的Outlook联系人中读取,只显示那些提供了移动电话号码的联系人。您点击某一个联系人,我们把这个联系人加入“收信人手机号码”的编辑框中。本事件主要的事情就是,弹出一个“发送短信”的对话框。并取出联系人中设置

21、了移动号码的。其他的细节我们就不再介绍了,介绍一下默认Outlook联系人的获取问题:首先我们通过Set olContacts = g_oNS.GetDefaultFolder(olFolderContacts).Items获得默认的联系人文件夹的Items集合。然后,用For Each olContact In olContacts遍历这个Items集合。这个集合中的每一个对象都应该是一个“Outlook.ContactItem”Item对象。所以我们可以获得这个Item对象的显示名称和移动手机号码。我们只显示那些拥有移动手机号码的联系人。代码如下所示: 准备取出联系人中带有移动号码的作为收

22、信人: Dim olContacts As Outlook.Items Dim olContact As Outlook.ContactItem GetDefaultFolder 方法基于 FolderType 参数返回默认的文件夹 (例如,olFolderInbox 常量将“收件箱”文件夹返回给当前登录的用户)。 我们现在选择进入的是: 包含 ContactItem 对象和 DistListItem 对象的“联系人”文件夹 (olFolderContacts)。 Set olContacts = g_oNS.GetDefaultFolder(olFolderContacts).Items f

23、rmMenuMain.listContact.Clear Dim nIndex As Integer Dim szContactItem As String nIndex = 0 On Error Resume Next 遍历每一个联系人: For Each olContact In olContacts If Len(olContact.MobileTelephoneNumber) = 11 Then 联系人的显示名称: szContactItem = Replace(olContact.FileAs, , ) szContactItem = Replace(szContactItem, ,

24、 ) 联系人的移动号码: frmMenuMain.listContact.AddItem szContactItem & & _ olContact.MobileTelephoneNumber & , nIndex nIndex = nIndex + 1 End If Next On Error GoTo 0版权声明:第二章部分文字引用自Programming Microsoft Outlook and Exchange一书,该书作者Thomas Rizzo,特此声明本文档仅供参考。本文档所包含的信息代表了在发布之日,zhengyun对所讨论问题的当前看法,zhengyun不保证所给信息在发布

25、之日以后的准确性。 Revision History:VersionDateCreatorDescription1.0.0.12004-3-9郑昀草稿2.3.2. g_oForwardBHandler_Click事件这个按钮的名称是“转发”.这个对话框中的内容将根据您选中的上下文而定,更详细内容参见下面章节。简单的说,我们将根据您选中的项是邮件,还是便笺,或者日程,或者联系人,智能显示发送内容。“联系人列表”将从您的Outlook联系人中读取。第一个问题,如何确定当前用户选中的项是什么类型,邮件,还是联系人?首先我们通过Set oSelection = g_oExplorer.Selectio

26、n得到当前用户所选择的项。如果oSelection是Nothing,那么表明用户没有选中任何东西。然后,用For Each oItem In oSelection遍历这个Selection集合。这个集合中的每一个对象都应该是一个Item对象。我们可以通过这个Item对象的“MessageClass”属性获知它是什么。它可能是: IPM.Note 邮件 IPM.Contact 联系人 IPM.StickyNote 便笺 IPM.Appointment 日程对于不同类型Item对象,我们获取它的不同属性。代码如下所示: - 如果选中了一项: 那么首先判断是否是一封邮件,即oItem.Message

27、Class是IPM.Note For Each oItem In oSelection If oItem.MessageClass = IPM.Note Then get the current mail item Dim oCurMail As Outlook.MailItem Set oCurMail = oItem szContent = 主题: & oCurMail.Subject & vbCrLf 那么其次判断是否是一个联系人,即oItem.MessageClass是IPM.Contact ElseIf oItem.MessageClass = IPM.Contact Then ge

28、t the current mail item Dim oCurContact As Outlook.ContactItem Set oCurContact = oItem 那么其次判断是否是一个便笺,即oItem.MessageClass是IPM.StickyNote ElseIf oItem.MessageClass = IPM.StickyNote Then get the current note item Dim oCurNote As Outlook.NoteItem Set oCurNote = oItem 那么其次判断是否是一个日程,即oItem.MessageClass是IP

29、M.Appointment ElseIf oItem.MessageClass = IPM.Appointment Then get the current appointment item Dim oCurAppo As Outlook.AppointmentItem Set oCurAppo = oItem End If Next 2.4.处理属性页事件在VB中,我们需要编写NameSpace对象和Application对象的OptionsPageAdd事件,来增加一个我们自定制的属性页,如下所示:2.4.1. g_oNS_OptionsPagesAdd事件它隶属于NameSpace对象。

30、当用户单击我们正在监控的名称区的文件夹,然后选择了“属性”时,将触发NameSpace对象的OptionPagesAdd事件。本事件有两个参数,含义是: Pages 是Outlook属性页的一个集合; Folder 它是用户正试图检索其属性的文件夹。首先,通过调用Set oNewPage = CreateObject(TomosoftP.AdminPage)创建对象,这是一个我们编写的ActiveX控件,实际上就是添加到PropertyPages集合中的子例程的属性页。其次,为我们创建的属性页传递默认数值。然后,通过把自身对象的引用进行:oNewPage.oAdmin = Me将我们加载项的对象自身传递给新

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1