扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
与 Outlook 安全更新的冲突
运行 OPine 时,您肯定知道由 Outlook 启动的以下对话框(图 6)
图 6. Outlook 2003 安全警告
尽管这会干扰最终用户,但该行为是设计造成的。在 Outlook 2003 下面,(选择对象的)选择成员被认为是可能有安全风险的。因而,系统会提示用户输入权限才能继续操作,防止电子邮件蠕虫和病毒使用对象模型干坏事。
注 如果希望阅读关于哪些 Outlook 类型和成员导致该安全提示的文档,请参阅文章 What's New in Microsoft Office Outlook 2003 for Developers?
假如最终用户总是可以通过对安全提示作出"No"的响应来拒绝对 Outlook 的访问,您就能够在自定义应用程序中通过编程使用 Outlook 时自由地使用 try/catch 逻辑。例如,为了避免发生运行库故障,应当对 OPineHelper.DisplayNotes()(以及其余方法)进行如下更改:
public static void DisplayNotes(ApplicationClass o)
|
注 值得注意的是,生成 Outlook 外接程序时,OnConnection() 方法的传入 Microsoft.Office.Interop.Outlook.Application 参数被假设为可信任的,在大多数 情况下,这将阻止安全警报的出现。
使用 Visual Studio .NET 2003 创建 Outlook 外接程序
下一个示例研究如何使用自定义功能来扩展 Outlook 2003.应用程序可扩展性的整个想法是 Microsoft 产品的另一个基石。基本上,诸如Outlook、Word 或 Visual Studio .NET 这样的应用程序都旨在能够让外部厂商或个人通过插入新的对象(假设上述对象实现了正确的接口)来扩展上述功能。
虽然大多数时候您肯定只使用 C# 命令行编译器 (csc.exe) 和 notepad.exe 来生成外接程序,但如果利用 Visual Studio .NET 共享外接程序项目模板,将节省一些键入时间。为了清楚地加以说明,我们将创建一个名为 EMailStatsAddIn 的外接程序。该外接程序将插到 Outlook 2003 的现有 UI 中,并提供以下功能:
* 显示用户在该天/月接收了多少封邮件。
* 显示用户在该天/月发送了多少封邮件。
首先从 New Project 对话框的 Other Projects | Extensibility Projects 文件夹中选择该模板(图 7)。
图 7. 共享的外接程序项目模板
一旦单击 OK 按钮,系统将指引您执行一个五步的向导,以便配置初始的共享外接程序项目。第一个步骤是选择要使用的语言(Microsoft_ Visual C#_ 或 Microsoft_ Visual Basic_ .NET C++)和基本框架(。NET 或基于 COM 的 ATL)。对于我们的示例,我们显然希望 Visual C#.
第二个步骤是选择外接程序的宿主。假定我们只对 Outlook 2003 感兴趣,请取消选中其他所有选项(图 8)。
图 8. 选择所需宿主
步骤三允许您提供当前外接程序的"友好"名称和说明。这些字符串值用于控制外接程序将被宿主外接程序对话框如何注册和显示。请随便输入您认为适合的值。
步骤 4 中显示的两个选项用于指定外接程序是否应当在启动时自动加载到宿主中,以及允许目标机器上的哪些用户访问外接程序。对于 EMailStatsAddIn,我们将同时选中这两个选项(图 9)。
图 9. 加载共享外接程序的选项。
步骤五只用来确认所选项。一旦完成共享外接程序向导,就会发现您已经得到一个包含两个项目的解决方案:
*外接程序本身 (EMailStatsAddIn)
*安装项目 (EMailStatsAddInSetup)
本文稍后讨论安装项目的角色。
引用的程序集
除了标准的 System.dll、System.Data.dll 和 System.XML.dll 程序集以外,共享外接程序还自动引用了一个名为 Extensibility.dll 的程序集。该程序集包含单个命名空间 (Extensibility),该命名空间确切定义了三个类型(参阅表 3)。
表 3.可扩展性命名空间的类型
可扩展性命名空间的类型 | 基本含义 |
IDTExtensibiltity2 |
所有外接程序都必须实现的关键接口。 |
ext_ConnectMode |
枚举,表示将宿主连接到给定外接程序的各种方式。 |
ext_DisconnectMode |
枚举,表示可以将给定的外接程序与宿主断开的各种方式。 |
需要注意的被引用的其他程序集是 Office.dll.虽然该程序集的确定义很多类型(可以通过 Visual Studio.NET 2003 对象浏览器来确认),但最重要的类型必须与用自定义小部件来扩展宿主的 GUI 以便与正在开发的外接程序进行交互有关。在这里,我不会对 Office 对象模型深入讨论太多,这方面的内容请参阅 MSDN 网站上的 online reference.
注意,共享外接程序项目模板不会自动引用 Microsoft.Office.Interop.Outlook.dll 程序集,所以一定要现在通过 Add References 对话框进行该引用。这样做时,请添加对 System.Windows.Forms.dll 的引用,在访问 MessageBox 类型时将需要它。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者