从另一个应用程序附加/发送文件时捕获Outlook事件



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

我已经尝试使用Application.ItemLoad事件,但是在成功投射到Outlook.MailItem之后,我无法访问任何方法或属性(我遇到了一个错误,说明System.Runtime.InteropServices.COMException: The item’s properties and methods cannot be used inside this event procedure )。我正在Visual Studio 2010中使用C#。

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

由于Outlook在外部应用程序打开新的Inspector窗口时尚未运行 - 您必须自己手动调用ThisAddIn_Startup或连接加载Inspector功能区时需要触发的任何自定义事件。最好的地方是通过处理CreateRibbonExtensibilityObjectRequestService方法。

protected override object RequestService(Guid serviceGuid)
{
    if (serviceGuid == typeof(Office.IRibbonExtensibility).GUID)
       this.ThisAddIn_Startup(this, null);
    return base.RequestService(serviceGuid);
}

唯一的警告是您需要支持ThisAddIn_Startup重新输入方法,因为功能区和Outlook现在都可以调用启动例程。您将需要安全地管理锁定,以确保您不会多次致电Init ThisAddIn_Startup )例程。

最新更新