اسحب وإسقاط من مرفق ملف البريد الإلكتروني في GroupWise إلى تطبيق .NET
-
23-08-2019 - |
سؤال
أحاول السماح بمرفق من بريد إلكتروني مفتوح في 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);
}
لا تنتمي إلى StackOverflow