VSTO C# - Outlook Addin - 如何区分 .附件选择对象



Outlook 2010 Addin in in Visual Studio (C#(.

我正在尝试找到一种方法来区分.从资源管理器检索的附件选择(当只是预览收件箱上的邮件项目时(和 。从检查器检索的附件选择(双击并在单独的窗口中实际打开邮件时(,在Outlook中右键单击附件本身时

我正在尝试做这样的事情:

public void ButtonClick(Office.IRibbonControl control)
{
    //right clicked attachment item -> context menu
    if (control.Context is Outlook.AttachmentSelection)
    {
        if (control.Context is Outlook.Inspector)
            MessageBox.Show("inspector");
        else if (control.Context is Outlook.Explorer)
            MessageBox.Show("explorer");
     }
}

但是一旦第一个"如果"有效,内部的"如果"都失败了,因为上下文不是 Outlook 检查器,也不是 Outlook 资源管理器。Microsoft示例和解释不是很有帮助,因为在他们的代码片段中,他们只是对附件发送消息框,而没有更深入地验证它们的来源(资源管理器\检查器(。

我需要的是获取用户右键单击附件的 Mailitem,并从中提取信息,而不是直接使用附件。

知道吗? 有人吗?

可以使用应用程序类的 ActiveWindow 方法来确定附件是从资源管理器窗口还是从检查器窗口打开的。该方法返回一个对象,表示桌面上当前Microsoft Outlook 窗口,资源管理器或检查器对象。如果未打开 Outlook 资源管理器或检查器,则不返回任何内容。

此外,您可能会发现Outlook项目的BeforeAttachmentPreview事件很有帮助。在预览与父对象的实例关联的附件之前触发它。即,在预览附件之前触发事件,无论是从活动资源管理器的阅读窗格中的附件条还是从活动检查器。请注意,您可以取消该操作。您只需要将取消参数设置为 true。

怎么样? 直接来自MSDN

Outlook.MailItem mailItem = Inspector.CurrentItem as Outlook.MailItem;
if (mailItem != null)
      {
          if (mailItem.EntryID == null)
          {
              mailItem.Subject = "This text was added by using code";
              mailItem.Body = "This text was added by using code";
          }
    }

相关内容

  • 没有找到相关文章

最新更新