Arrastre y suelte desde un archivo adjunto de correo electrónico en GroupWise a una aplicación.NET
winforms drag-and-drop (1)
Estoy intentando permitir que un archivo adjunto de un correo electrónico abierto en Novell GroupWise se incluya en mi aplicación C # WinForms. La funcionalidad .NET estándar no funciona.
En el evento DragDrop de un control, e.Data.GetFormats () devuelve lo siguiente.
FileGroupDescriptorW
FileGroupDescriptor
FileContents
attachment format
Puedo obtener el nombre de archivo con e.Data.GetData ("FileGroupDescriptor") y yendo a la posición 76.
Desafortunadamente, e.Data.GetData ("FileContents") causa una primera oportunidad System.NotImplementedException en System.Windows.Forms.dll y devuelve null. El formato del archivo adjunto también devuelve null.
Mis búsquedas me dicen que arrastrar y soltar es mucho más complejo de lo que pensaba :) Parece que GroupWise podría estar usando un formato llamado CFSTR_FILECONTENTS, pero eso es solo una suposición. Los archivos adjuntos se pueden arrastrar y soltar con éxito en el escritorio de Windows u otras carpetas.
Gracias por cualquier sugerencia.
No tuve suerte para encontrar esto también. Esto es lo que se me ocurrió (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);
}