如何获取当前窗口ID或Outlook新电子邮件窗口的内容。

时间:2015-08-03 12:27:31

标签: c# outlook

我在outlook新消息窗口中有一个功能区按钮。 按钮的目的是.. 如果有人按下按钮,那么标志将设置为真。

在邮件发送期间,我想在该标志上实现自定义逻辑。

但问题是如果我打开两个窗口,那么标志值保持当前窗口的状态是正常的。

如何获取当前窗口ItemSend事件或当前窗口的标志值。

2 个答案:

答案 0 :(得分:0)

在按钮的事件处理程序中,传递Control参数(类型为IRibbonControl)。阅读IRibbonControl.Context属性并将其强制转换为Inspector对象。然后,您可以读取Inspector.CurrentItem属性以检索正在显示的项目。

您还可以使用Application.ActiveInspector(然后是Inspector.CurrentItem) - 要让用户单击您的按钮,检查器应该变为活动状态,因此Application.ActiveInspector将检索托管您的按钮的检查员。

答案 1 :(得分:-1)

Outlook不会为其窗口分配任何ID。相反,您可以使用Window句柄(Windows API)。要获取句柄,您需要将检查器或资源管理器窗口强制转换为IOLEWindow界面,并使用检索句柄的GetWindow方法。

您还可以使用Inspector类的CurrentItem属性来获取显示的Outlook项目对象。保存的项目设置了EntryID属性值,允许获取对象的唯一条目ID。这是MSDN所说的:

  

MAPI商店提供程序在其商店中创建项目时分配唯一的ID字符串。因此,在保存或发送Outlook项目之前,不会为其设置EntryID属性。当项目移动到另一个商店时,例如,从您的收件箱移动到Microsoft Exchange Server公用文件夹,或从一个个人文件夹(.pst)文件移动到另一个.pst文件时,条目ID会更改。解决方案不应该依赖于EntryID属性是唯一的,除非不移动项目。

您还可以考虑添加具有自己ID的用户属性。