1

MailItemOutlook から をドラッグしてウィンドウ フォームにドロップするためのほとんどのコード サンプルには、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 のメイン ウィンドウから選択したメールを取得します。ユーザーが警戒していない限り、間違った電子メールを受け取ったことにさえ気付かないでしょう。

これに対する解決策はありますか?

4

1 に答える 1

0

ActiveWindow()それらが(アクティブなエクスプローラーまたはインスペクターが使用されていない) でないかどうかを判断し、IDataObject代わりにインターフェイスを活用できますActiveExplorer.Selection()。私たちのプラグインでは、ドラッグアンドドロップ操作の高度な検索をサポートしないことを選択しましたが、これは常にオプションであるとは限りません.

Win32 を使用した例については、この Code Project Outlook Drag IDataObject- n-Drop example をダウンロードしてください。何らかの理由で、Microsoft は高度な検索ウィンドウの周りに VSTO インターフェイス ラッパーを公開しないことを選択しました。この問題は Office 2013 にも存在します。

于 2012-10-19T13:35:24.870 に答える