用于从Outlook拖动MailItem
并删除寡妇表单的大多数代码示例都涉及对Outlook的ActiveExplorer
窗口的引用...
Dim objMI As Microsoft.Office.Interop.Outlook.MailItem
For Each objMI In objOL.ActiveExplorer.Selection()
Dim strFile As String = _
IO.Path.Combine("c:\temp", _
(objMI.Subject + ".msg").Replace(":", ""))
lblFile.Text += strFile + Environment.NewLine
objMI.SaveAs(strFile)
Next
...但是,如果从高级查找弹出窗口拖动,则会产生意外结果。
您的C#或VB代码会从主Outlook窗口中获取所选电子邮件,而不是您从“高级查找”电子邮件列表中实际选择的电子邮件。除非用户警觉,否则他甚至不会注意到他收到了错误的电子邮件。
有没有解决方案?
答案 0 :(得分:0)
您可以确定它们是不是ActiveWindow()
(没有使用的活动资源管理器或检查器),然后利用IDataObject
界面而不是ActiveExplorer.Selection()
。对于我们的插件 - 我们只是选择不支持高级查找进行拖放操作,但这并不总是一种选择。
有关使用Win32 IDataObject
- download this Code Project Outlook Drag-n-Drop example的示例。出于某种原因,Microsoft选择不在高级查找窗口周围公开VSTO界面包装器。 Office 2013中仍存在此问题。