[英]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.