簡體   English   中英

將mailitem從Outlook中的“高級查找”窗口中拖放到Winforms上?

[英]Drag mailitem from “Advanced Find” window in Outlook and drop on Winforms?

用於將MailItem從Outlook拖放到寡婦窗體上的大多數代碼示例都涉及對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主窗口中捕獲選定的電子郵件,而不是您從“高級查找”電子郵件列表中實際選擇的電子郵件。 除非用戶保持警惕,否則他甚至不會注意到自己收到了錯誤的電子郵件。

有什么解決辦法嗎?

您可以確定它們是否不是ActiveWindow()未使用活動的資源管理器或檢查器 ),然后利用IDataObject接口而不是ActiveExplorer.Selection() 對於我們的插件-我們只是選擇了不支持“ 高級查找 ”的拖放操作,但這並不總是一種選擇。

有關使用Win32 IDataObject的示例,請下載此Code Project Outlook Drag-n-Drop示例 出於某種原因,Microsoft選擇不在“ 高級查找”窗口周圍公開VSTO接口包裝。 Office 2013中仍然存在此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM