Imports System.IO Imports Microsoft.Office.Interop Public Class ClassDragDrop Public Shared files_dropped As String() Public Shared Function Drop_File(e As DragEventArgs) Try LOGGER.Debug("In Drop_File....") files_dropped = Nothing Dim Sql As String = "DELETE FROM TBPMO_FILES_USER WHERE HANDLE_TYPE <> 'SCAN' AND USER_WORK = '" & USER_USERNAME & "'" MYDB_ECM.ExecuteNonQuery(sql) If e.Data.GetDataPresent(DataFormats.FileDrop) Then LOGGER.Debug("Simple File Drop") Dim MyFiles() As String Dim i As Integer ' Assign the files to an array. MyFiles = e.Data.GetData(DataFormats.FileDrop) ' Loop through the array and add the files to the list. For i = 0 To MyFiles.Length - 1 LOGGER.Info("Simple FileDrop - File: " & MyFiles(i)) ReDim Preserve files_dropped(i) files_dropped(i) = "@DROPFROMFSYSTEM@" & MyFiles(i) ' ListBox1.Items.Add(MyFiles(i)) Next Return True ElseIf (e.Data.GetDataPresent("FileGroupDescriptor")) AndAlso (e.Data.GetDataPresent("FileContents")) Then '// the first step here is to get the stbFileName '// of the attachment and '// build a full-path name so we can store it '// in the temporary folder '// '// set up to obtain the aryFileGroupDescriptor '// and extract the file name Dim stmInput As IO.Stream = CType(e.Data.GetData("FileGroupDescriptor"), IO.Stream) Dim aryFileGroupDescriptor(512) As Byte ' = new byte[512] stmInput.Read(aryFileGroupDescriptor, 0, 512) '// used to build the stbFileName from the aryFileGroupDescriptor block Dim stbFileName As System.Text.StringBuilder = New System.Text.StringBuilder("") '// this trick gets the stbFileName of the passed attached file Dim intCnt As Integer = 76 Do While aryFileGroupDescriptor(intCnt) <> 0 stbFileName.Append(Convert.ToChar(aryFileGroupDescriptor(intCnt), System.Globalization.CultureInfo.CreateSpecificCulture("de-DE"))) intCnt += 1 Loop stmInput.Close() Dim anhaenge = e.Data.GetDataPresent("FileContents") 'Dim path As String = "C:\VBProjekte\Dateien" '// put the zip file into the temp directory Dim strOutFile As String = Path.GetTempPath() & stbFileName.ToString() '// create the full-path name '// '// Second step: we have the file name. '// Now we need to get the actual raw '// data for the attached file and copy it to disk so we work on it. '// '// get the actual raw file into memory Dim msInput As IO.MemoryStream = CType(e.Data.GetData("FileContents", True), IO.MemoryStream) 'This returns nothing for an Email If msInput Is Nothing = False Then LOGGER.Debug("Drag of Outlook Attachment") '// allocate enough bytes to hold the raw date Dim aryFileBytes(CType(msInput.Length, Int32)) As Byte '// set starting position at first byte and read in the raw data msInput.Position = 0 msInput.Read(aryFileBytes, 0, CType(msInput.Length, Int32)) '// create a file and save the raw zip file to it Dim fsOutput As IO.FileStream = New IO.FileStream(strOutFile, IO.FileMode.Create) '; fsOutput.Write(aryFileBytes, 0, aryFileBytes.Length) fsOutput.Close() ' // close the file Dim resultVersion = ClassHelper.Versionierung_Datei(strOutFile) If resultVersion <> "" Then strOutFile = resultVersion End If Dim finTemp As IO.FileInfo = New IO.FileInfo(strOutFile) '// always good to make sure we actually created the file If (finTemp.Exists = True) Then ReDim Preserve files_dropped(0) files_dropped(0) = "@OUTLOOK_ATTACHMENT@" & strOutFile LOGGER.Debug("Drop an Attachment - File: " & strOutFile) Return True Else LOGGER.Warn("Attachment File from Outlook could not be created") End If Else LOGGER.Warn("No simple drag and drop.", True) For Each fmt As String In e.Data.GetFormats() ' Output format name and type LOGGER.Warn("e.Data is: " & fmt + " (" + e.Data.GetData(fmt).ToString() + ")", True) Next End If End If If e.Data.GetDataPresent("FileGroupDescriptor") Then Dim oApp Try oApp = New Outlook.Application() Catch ex As Exception MsgBox("Unexpected error in Initialisieren von Outlook-API:" & vbNewLine & ex.Message & vbNewLine & vbNewLine & "Evtl ist Outlook nicht in der dafür vorgesehenen For") Return False End Try LOGGER.Debug("Drop of msg") 'supports a drop of a Outlook message Dim myobj As Object For i As Integer = 1 To oApp.ActiveExplorer.Selection.Count myobj = oApp.ActiveExplorer.Selection.Item(i) Dim subj As String = myobj.Subject If subj = "" Then subj = "NO_SUBJECT" End If If subj.Contains("\") Then subj = subj.Replace("\", "-") End If If subj.Contains("/") Then subj = subj.Replace("/", "-") End If 'hardcode a destination path for testing Dim strFile As String = IO.Path.Combine(Path.GetTempPath, (subj + ".msg").Replace(":", "")) strFile = strFile.Replace("?", "") strFile = strFile.Replace("!", "") strFile = strFile.Replace("%", "") strFile = strFile.Replace("$", "") LOGGER.Info("Drop of msg - File:" & strFile) Try myobj.SaveAs(strFile) Catch ex As Exception MsgBox("Error in Save Email2Tempfile" & vbNewLine & ex.Message, MsgBoxStyle.Critical) Return False End Try ReDim Preserve files_dropped(i) files_dropped(i) = "@OUTLOOK_MESSAGE@" & strFile Next Return True 'Drop eines Outlook Attachments End If Catch ex As Exception MsgBox("Unexpected Error in Drop_File: " & ex.Message, MsgBoxStyle.Critical) End Try If e.Data.GetDataPresent(DataFormats.StringFormat) Then Dim Wert As String = CType(e.Data.GetData(DataFormats.StringFormat), Object) Console.WriteLine(Wert) ReDim Preserve files_dropped(0) files_dropped(0) = "@SCAN@" & Wert Return True End If End Function Public Shared Sub Drag_enter(e As DragEventArgs) Try My.Settings.WD_INDEXDOKART_SAVE = "" If e.Data.GetDataPresent(DataFormats.FileDrop) Then e.Effect = DragDropEffects.All LOGGER.Debug("DragEnter ... SimpleFileDrop") 'frmForm_Constructor_Main_2.tslblStatusMain_show(True, "DragEnter ... SimpleFileDrop") ElseIf (e.Data.GetDataPresent("FileGroupDescriptor")) AndAlso (e.Data.GetDataPresent("FileContents")) Then e.Effect = DragDropEffects.Copy 'frmForm_Constructor_Main_2.tslblStatusMain_show(True, "DragEnter ... Attachment from Outlook") LOGGER.Debug("DragEnter ... Attachment from Outlook") ElseIf e.Data.GetDataPresent("FileGroupDescriptor") Then 'handle a message dragged from Outlook e.Effect = DragDropEffects.Copy 'frmForm_Constructor_Main_2.tslblStatusMain_show(True, "DragEnter ... OutlookMessage") LOGGER.Debug("DragEnter ... OutlookMessage") Else 'otherwise, do not handle e.Effect = DragDropEffects.Copy 'frmForm_Constructor.tslblStatusMain_show(True, "DragEnter ... Other FileFormat") LOGGER.Debug("DragEnter ... Other FileFormat") End If Catch ex As Exception End Try End Sub End Class