2009-05-22 14 views
4

Novell GroupWiseで開いている電子メールの添付ファイルをC#WinFormsアプリケーションにドロップできるようにしようとしています。標準の.NET機能は動作しません。GroupWiseの添付ファイルから.NETアプリケーションへのドラッグアンドドロップ

コントロールのDragDropイベントで、e.Data.GetFormats()は以下を返します。

FileGroupDescriptorW 
FileGroupDescriptor 
FileContents 
attachment format 

私はe.Data.GetData( "FILEGROUPDESCRIPTOR")とファイル名を取得することができますし、76

を配置しようとして残念ながら、e.Data.GetData( "たFileContents")は、最初のチャンスシステムを引き起こしSystem.Windows.Forms.dllで.NotImplementedExceptionを返し、nullを返します。添付書式もnullを返します。

私の検索では、ドラッグ&ドロップは思ったよりずっと複雑です:) GroupWiseがCFSTR_FILECONTENTSというフォーマットを使用しているようですが、それは単なる推測です。添付ファイルは、Windowsのデスクトップまたは他のフォルダに正常にドラッグアンドドロップすることができます。

ありがとうございます。

+1

私はGroupwiseと仕事をしなければならない唯一の貧しい魂ではない。 – rjrapson

答えて

2

私はこれも見つからなかった。ここで私が思いついたのは(Groupwise 7):

private void control_DragDrop(object sender, DragEventArgs e) 
{ 
    string strFilename = null; 

    //something about the act of reading this stream creates the file in your temp folder(?) 
    using (MemoryStream stream = (MemoryStream)e.Data.GetData("attachment format", true)) 
    { 
     byte[] b = new byte[stream.Length]; 
     stream.Read(b, 0, (int)stream.Length); 
     strFilename = Encoding.Unicode.GetString(b); 
     //The path/filename is at position 10. 
     strFilename = strFilename.Substring(10, strFilename.IndexOf('\0', 10) - 10); 
     stream.Close(); 
    } 

    if (strFilename != null && File.Exists(strFilename)) 
    { 
     //From here on out, you're just reading another file from the disk... 
     using(FileStream fileIn = File.Open(strFilename, FileMode.Open)) 
     { 
      //Do your thing 
      fileIn.Close(); 
     } 
    } 

    File.Delete(strFilename); 
} 
+0

うわー、ありがとうジョン。これは非常にクールで機嫌が悪いです:-) e.Data.GetData(「添付ファイル形式」)にアクセスするだけで、ファイルが作成されます。どういうわけか私は前にnullを返すと思ったが、私は混乱していたに違いない。再度、感謝します。 乾杯 Ross – tetranz

+0

残念なことに、GetDataはnullを返しました。 – noelicus

関連する問題