Vb.net 将显示目录的拖放应用程序转换为显示哈希

Vb.net 将显示目录的拖放应用程序转换为显示哈希,vb.net,drag-and-drop,md5,Vb.net,Drag And Drop,Md5,我无法将此代码转换为允许我将文件放入我的应用程序中,并且我的应用程序会创建一个消息框,显示其md5哈希代码。目前,我有代码提供我插入的文件的目录 Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.AllowDrop = True End Sub Private Sub Form1_Dra

我无法将此代码转换为允许我将文件放入我的应用程序中,并且我的应用程序会创建一个消息框,显示其md5哈希代码。目前,我有代码提供我插入的文件的目录

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.AllowDrop = True
End Sub

Private Sub Form1_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop
    Dim files() As String = e.Data.GetData(DataFormats.FileDrop)
    For Each path In files
        MsgBox(path)
    Next
End Sub

Private Sub Form1_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragEnter
    If e.Data.GetDataPresent(DataFormats.FileDrop) Then
        e.Effect = DragDropEffects.Copy
    End If
End Sub
End Class

似乎您拥有所需的大部分代码,只需要一个函数来计算md5,然后您就可以将其插入到消息框中:

MsgBox(ComputeMD5Hash(path))
这里是函数,主要取自此函数

如果您想删除一个目录并获取其中所有文件的哈希值,首先需要检查您是在处理文件还是文件夹,如果它是一个文件夹,则循环遍历其中所有文件并为每个文件调用函数,这将使您的DragDrop事件处理程序看起来像这样,还有一个额外的好处,就是可以同时处理文件和文件夹

Private Sub Form1_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop
    Dim files() As String = e.Data.GetData(DataFormats.FileDrop)
    For Each path In files
        If IO.File.GetAttributes(path) = FileAttribute.Directory Then
            'Dealing with a Directory
            Dim di As New IO.DirectoryInfo(path)
            Dim fiArr As IO.FileInfo() = di.GetFiles()
            Dim fri As IO.FileInfo
            For Each fri In fiArr
                MessageBox.Show(fri.FullName & " " & ComputeMD5Hash(fri.FullName))
            Next fri
        Else
            'Dealing with a File
            MessageBox.Show(path & " " & ComputeMD5Hash(path))
        End If
    Next
End Sub

任何想法,我似乎都想不出来。
Private Sub Form1_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop
    Dim files() As String = e.Data.GetData(DataFormats.FileDrop)
    For Each path In files
        If IO.File.GetAttributes(path) = FileAttribute.Directory Then
            'Dealing with a Directory
            Dim di As New IO.DirectoryInfo(path)
            Dim fiArr As IO.FileInfo() = di.GetFiles()
            Dim fri As IO.FileInfo
            For Each fri In fiArr
                MessageBox.Show(fri.FullName & " " & ComputeMD5Hash(fri.FullName))
            Next fri
        Else
            'Dealing with a File
            MessageBox.Show(path & " " & ComputeMD5Hash(path))
        End If
    Next
End Sub