【问题标题】:Drag mailitem from "Advanced Find" window in Outlook and drop on Winforms?从 Outlook 的“高级查找”窗口拖动 mailitem 并放到 Winforms 上?
【发布时间】:2012-10-10 02:42:24
【问题描述】:

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

这里是an example

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

有什么解决办法吗?

【问题讨论】:

    标签: winforms drag-and-drop outlook vsto mailitem


    【解决方案1】:

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

    例如使用 Win32 IDataObject - download this Code Project Outlook Drag-n-Drop example。出于某种原因,Microsoft 选择不在 Advanced Find 窗口周围公开 VSTO 接口包装器。此问题在 Office 2013 中仍然存在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多