.NETアプリケーションへのGroupWiseで電子メールの添付ファイルからのドラッグ&ドロップ

StackOverflow https://stackoverflow.com/questions/896197

質問

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

コントロールのドラッグアンドドロップイベント、e.Data.GetFormats()に次のように返します。

FileGroupDescriptorW
FileGroupDescriptor
FileContents
attachment format

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

残念ながら、e.Data.GetData( "たFileContentsは")のSystem.Windows.Forms.dllで最初のチャンスSystem.NotImplementedExceptionを引き起こし、nullを返します。添付ファイルのフォーマットは、nullを返します。

私の検索では、そのドラッグ&ドロップは、私はGroupWiseがCFSTR_FILECONTENTSと呼ばれる形式を使用している場合がありますように思えますがそれはただの推測です:)思ったよりも多く複雑です教えてください。添付ファイルが正常にWindowsのデスクトップまたは他のフォルダにドラッグ&ドロップすることができます。

任意の提案をありがとうます。

役に立ちましたか?

解決

私もこれを見つけること運がなかったです。ここで私は(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);
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top