我正在尝试为Outlook 2007/2010创建一个加载项,以修改新创建的电子邮件的收件人。如果用户在Outlook中创建新的电子邮件(我正在使用Inspectors.NewInspector
事件),一切正常。但是,如果用户使用其他应用程序(例如 MS Word或Adobe Acrobat )尝试通过电子邮件发送附件,则在显示撰写电子邮件窗口时不会触发NewInspector
事件。是否有一种直接的方法来捕获在这种情况下引发的事件?
我已尝试使用Application.ItemLoad
事件,但在成功将其转换为Outlook.MailItem
后,我无法访问任何方法或属性(我收到错误说明{{1} }} 的)。我在Visual Studio 2010中使用C#。
答案 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
)例程。