我正在尝试为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
功能区时需要触发的任何自定义事件。最好的地方是通过处理CreateRibbonExtensibilityObject
或RequestService
方法。
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
)例程。