1

大多数用于从 Outlook 拖放 a 并放在寡妇窗体上的代码示例MailItem都涉及对 OutlookActiveExplorer窗口的引用...

这是一个例子

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 主窗口获取选定的电子邮件,而不是您从“高级查找”电子邮件列表中实际选择的电子邮件。除非用户保持警惕,否则他甚至不会注意到他收到了错误的电子邮件。

有什么解决办法吗?

4

1 回答 1

0

您可以确定它们是否不是ActiveWindow()没有使用中的活动资源管理器或检查器),然后利用IDataObject界面而不是ActiveExplorer.Selection(). 对于我们的插件 - 我们只是选择不支持拖放操作的高级查找,但这并不总是一个选项。

对于使用 Win32 的示例IDataObject-下载此代码项目 Outlook Drag-n-Drop 示例出于某种原因,Microsoft 选择不在“高级查找”窗口周围公开 VSTO 接口包装器。此问题在 Office 2013 中仍然存在。

于 2012-10-19T13:35:24.870 回答