1

我正在尝试为 Outlook 2007/2010 创建一个加载项来修改新创建的电子邮件的收件人。如果用户在 Outlook 中创建新电子邮件(我正在使用该Inspectors.NewInspector事件),则一切正常。但是,如果用户使用其他应用程序(例如 MS Word 或 Adob​​e 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#。

4

1 回答 1

0

如果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

于 2012-10-29T15:48:22.520 回答