Outlook の添付ファイルをメールの件名からドラッグ アンド ドロップできるように作業していました。これを行うには、ファイルを RenPrivateItem として処理する必要がありました。すべて問題なく動作しますが、誰かが.NETのコンテキストで「RenPrivateItem」形式を定義できることを望んでいました。
私のコードが機能する理由を知りたいのですが、Web 検索でこの形式に関する詳細情報を見つけることができませんでした。
また、Visual Studio 2012 と Outlook 2007 を使用しています。
編集:
私は DragDrop を処理するプロセスに多少慣れていませんが、DragDrop によって処理されるはずの特定の種類のドキュメントしかないと推測しています。現在機能するファイルの例 (電子メール本文に含まれる添付ファイル .pdf) と機能しない例 (電子メールの件名に含まれる添付ファイル .pdf) を受け取りました。作業例は、次の行で true を返し、処理されます。
ElseIf idoData.GetDataPresent(System.Windows.Forms.DataFormats.Rtf, False) Then
動作しない例は、以下のコード ブロックに表示されているケースのいずれによっても処理されません。私の仕事は、それが機能しない理由を突き止めることでした (これは同じファイルであり、別の場所で電子メールに添付されているだけです)。.rtf を除いて、受信しているファイル形式が何であるかを理解していないため、他のケースを処理する方法を知るのが難しいと感じています:
Shared Sub ProcessOutlookDrop(ByVal idoData As Windows.Forms.IDataObject, ByVal
iIdReport As Integer, ByVal iIdFileReference As Integer)
If idoData.GetDataPresent("RenPrivateFileAttachments") Then
byFile = getFiledataArrayFromFileContents(idoData)
ElseIf idoData.GetDataPresent("RenPrivateItem") Then ' ADDED BY ME
byFile = getFiledataArrayFromFileContents(idoData) ' ADDED BY ME
ElseIf idoData.GetDataPresent(System.Windows.Forms.DataFormats.Rtf, False) Then
byFile = getFiledataArrayFromFileContents(idoData)
ElseIf idoData.GetDataPresent(System.Windows.Forms.DataFormats.Text, False) Then
byFile = getMessagedataArrayFromOutlook(idoData)
End If
実際の例 (本文に .pdf 添付ファイル) の形式を取得しています: Woozle、Object Descriptor、Rich Text Format、HtmlFormat、EnhancedMetafile、MetaFilePict、DeviceIndependentBitmap、System.Drawing.Bitmap、Bitmap、Embedded Object、FileGroupDescriptor、FileContents
壊れた例 (件名の .pdf 添付ファイル) については、次の形式を取得しています: FileGroupDescriptorW、FileGroupDescriptor、RenPrivateItem、FileContents
私の最初の質問に加えて、なぜこれらのファイルの扱いがそれほど異なるのでしょうか?