Outlook VSTO 加载项-打开多个 windows 时如何确定项目类型
Outlook VSTO Add In - How to determine the item type when multiple windows are open
我开发了一个 Outlook 插件,可以在电子邮件、会议请求等主题的开头添加一个字符串。
当用户第一次打开它时,程序会检测到屏幕上显示的 "CurrentItem"。
例如,当用户开始回复电子邮件时会出现问题,这会告诉程序当前项目是回复。然后用户在发送回复之前开始一封新电子邮件,将当前项目设置为 mailItem。然后当他们 return 回复他们之前开始的回复时,程序仍然认为它是一个 mailItem,因此它中断了应用程序。
我该如何解决这个问题?任何帮助将不胜感激。
如果有帮助,这是用户首次创建回复时点击的代码。
private void ThisAddIn_InlineResponse(object Item)
{
if (Item != null)
{
Outlook.MailItem mailItem = Item as Outlook.MailItem;
}
TypeCheck = "inline";
}
本质上,如果它是内联回复,我需要点击此代码,但我似乎无法在 window 初始化之外执行此操作。
使用 Application.ItemSend
事件在实际发送项目时对其进行处理。使用 Class
属性(您可以动态访问它,所有 OM 对象都公开它)来确定项目类型(例如 43 表示 OlObjectClass.olMail
)。
我开发了一个 Outlook 插件,可以在电子邮件、会议请求等主题的开头添加一个字符串。
当用户第一次打开它时,程序会检测到屏幕上显示的 "CurrentItem"。
例如,当用户开始回复电子邮件时会出现问题,这会告诉程序当前项目是回复。然后用户在发送回复之前开始一封新电子邮件,将当前项目设置为 mailItem。然后当他们 return 回复他们之前开始的回复时,程序仍然认为它是一个 mailItem,因此它中断了应用程序。
我该如何解决这个问题?任何帮助将不胜感激。
如果有帮助,这是用户首次创建回复时点击的代码。
private void ThisAddIn_InlineResponse(object Item)
{
if (Item != null)
{
Outlook.MailItem mailItem = Item as Outlook.MailItem;
}
TypeCheck = "inline";
}
本质上,如果它是内联回复,我需要点击此代码,但我似乎无法在 window 初始化之外执行此操作。
使用 Application.ItemSend
事件在实际发送项目时对其进行处理。使用 Class
属性(您可以动态访问它,所有 OM 对象都公开它)来确定项目类型(例如 43 表示 OlObjectClass.olMail
)。