VSTO C# - Outlook Addin - 如何区分.AttachmentSelections对象
Outlook 2010 Addin Visual Studio(C#)中。VSTO C# - Outlook Addin - 如何区分.AttachmentSelections对象
我试图找到一种方法,能够告诉从资源管理器中检索到的.AttachmentSelection(当只是在收件箱中预览邮件时)和从Inspector中检索到的.AttachmentSelection(当双击并实际打开邮件时一个单独的窗口),当右键单击在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 Inspector,也不是Outlook Explorer。 微软的样本和解释并不是非常有用,因为在他们的代码片段中,他们只是在消息框附件中没有更深入地验证它们的来源(explorer \ inspector)。
我的需求是抓住Mailitem,用户右键单击附件,并从中提取信息,而不是直接附加附件。
有什么想法吗?任何人 ?
您可以使用应用程序类的ActiveWindow方法来确定附件是否是从浏览器或检查窗口中打开。该方法返回一个代表桌面上当前Microsoft Outlook窗口的对象,可以是Explorer或Inspector对象。如果未打开Outlook资源管理器或检查器,则返回Nothing。
此外,您可能会发现Outlook项目的BeforeAttachmentPreview事件有帮助。它在与父对象的实例相关联的附件被预览之前被触发。即在预览附件之前触发事件,可以从活动资源管理器的阅读窗格中的附件栏或活动检查器中触发。请注意,您可以取消操作。您只需要将cancel参数设置为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";
}
}
嘿,感谢您的评论,但这并没有太大的帮助,如上所示,接收Outlook.AttachmentSelection它不能被铸造到邮件项目。 – Stavm 2015-02-08 16:19:47