从其他应用程序附加/发送文件时捕获Outlook事件

时间:2012-10-27 06:28:58

标签: c# outlook vsto office-interop outlook-addin

我正在尝试为Outlook 2007/2010创建一个加载项,以修改新创建的电子邮件的收件人。如果用户在Outlook中创建新的电子邮件(我正在使用Inspectors.NewInspector事件),一切正常。但是,如果用户使用其他应用程序(例如 MS Word或Adobe Acrobat )尝试通过电子邮件发送附件,则在显示撰写电子邮件窗口时不会触发NewInspector事件。是否有一种直接的方法来捕获在这种情况下引发的事件?

我已尝试使用Application.ItemLoad事件,但在成功将其转换为Outlook.MailItem后,我无法访问任何方法或属性(我收到错误说明{{1} }} 的)。我在Visual Studio 2010中使用C#。

1 个答案:

答案 0 :(得分:0)

如果Outlook.exe进程未运行,则NewInspector将不会触发,因为除非用户直接打开Outlook,否则不会调用ThisAddIn_Startup

由于Outlook在外部应用程序打开新的Inspector窗口时尚未运行 - 您必须自己手动调用ThisAddIn_Startup或附加{{1}时需要触发的任何自定义事件} ribbon已加载。最好的地方是handling CreateRibbonExtensibilityObject or RequestService methods

Inspector

唯一需要注意的是,您需要支持使用protected override object RequestService(Guid serviceGuid) { if (serviceGuid == typeof(Office.IRibbonExtensibility).GUID) this.ThisAddIn_Startup(this, null); return base.RequestService(serviceGuid); } 重新输入方法,因为功能区和Outlook现在都可以调用启动例程。您需要安全地管理锁定,以确保您不会多次调用{{1>}( ThisAddIn_Startup )例程。