اسحب وإسقاط من مرفق ملف البريد الإلكتروني في GroupWise إلى تطبيق .NET

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

سؤال

أحاول السماح بمرفق من بريد إلكتروني مفتوح في Novell GroupWise لتطبيق تطبيق My C # WinForms. لا تعمل وظيفة .NET القياسية.

في حدث DragDrop للتحكم، إرجاع E.Data.getFormats () ما يلي.

FileGroupDescriptorW
FileGroupDescriptor
FileContents
attachment format

يمكنني الحصول على اسم الملف مع e.Data.getData ("filegroupdescriptor") والذهاب إلى وضع 76.

لسوء الحظ، يؤدي E.Data.getData ("Filecontents") إلى نظام فرصة فرص أولية. تنسيق المرفق إرجاع أيضا NULL.

أخبرني عمليات البحث الخاصة بي أن السحب والإسقاط أكثر تعقيدا بكثير مما اعتقدت :) يبدو أنه قد يستخدم GroupWise تنسيقا يسمى CFSTR_FILECOMONTS ولكن هذا مجرد تخمين. يمكن سحب المرفقات بنجاح وإسقاطها على سطح مكتب 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