VB拖动外部文件到程序图标时进行删除

'模块代码
Public Enum FO_Operation
FO_MOVE = 1
FO_COPY = 2
FO_DELETE = 3
FO_RENAME = 4
End Enum

Public Enum FOFlags
FOF_MULTIDESTFILES = &H1 '目标指定多个文件
FOF_SILENT = &H4 '不要显示进度对话框
FOF_RENAMEONCOLLISION = &H8 '如果目标已经存在,则重命名
FOF_NOCONFIRMATION = &H10 '不提示用户
FOF_WANTMAPPINGHANDLE = &H20 '填写hnamemapping成员
FOF_ALLOWUNDO = &H40 '如果可能,存储撤销信息
FOF_FILESONLY = &H80 ',不要复制目录
FOF_SIMPLEPROGRESS = &H100 '不要显示每个文件的名称
FOF_NOCONFIRMMKDIR = &H200 '不要确认做任何需要的动作
End Enum

Public Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Long
hNameMappings As Long
lpszProgressTitle As Long ’ 仅在FOF_SIMPLEPROGRESS时使用
End Type
'执行系统文件对象的操作
Private Declare Function SHFileOperation Lib “shell32.dll” Alias “SHFileOperationA” (lpFileOp As SHFILEOPSTRUCT) As Long
'判断文件是否存在
Private Declare Function PathFileExists Lib “shlwapi.dll” Alias “PathFileExistsA” (ByVal pszPath As String) As Long

Private Op As SHFILEOPSTRUCT

'删除文件夹或文件的函数
Public Function DeleteFolder(sDeleteFolder As String, Optional Interface As Boolean = False) As Long
If PathFileExists(sDeleteFolder) <= 0 Then DeleteFolder = 0: Exit Function
SetAttr sDeleteFolder, vbNormal
With Op
.wFunc = FO_DELETE
.pFrom = sDeleteFolder
.fFlags = IIf(Interface = False, FOF_NOCONFIRMATION, FOF_NOCONFIRMATION And FOF_SILENT)
End With
SHFileOperation Op
End Function

Public Function PathIntegral(ByVal URL As String, ByVal N As Integer) As String
Set Fso = CreateObject(“Scripting.FileSystemObject”)
Select Case N
Case 0 '路径目录
PathIntegral = Fso.GetParentFolderName(URL)
Case 1 '文件名
PathIntegral = Fso.GetBaseName(URL)
Case 2 '文件后缀名
PathIntegral = Fso.GetExtensionName(URL)
End Select
End Function

'FORM代码
Dim Filepath As String, N As Long

Private Sub Form_Load()
Filepath = Command()
If Filepath = “” Then MsgBox “鼠标拖放要删除的程序图标到本程序图标上!”, vbOKOnly, “提示”: End
If Left(Filepath, 1) = Chr(34) Then
Filepath = Mid(Filepath, 2, Len(Filepath) - 2)
End If
N = MsgBox(“真的要永久删除“” & PathIntegral(Filepath, 1) & “”?”, vbYesNo + vbQuestion, “删除”)
If N = 1 Then Call DeleteFolder(Filepath)
End
End Sub

'将文件生成EXE文件后,拖动要删除的文件或目录文件夹到程序图标上即可,本代码只能一次单个文件进行处理,如进行多个文件删除,请自行修改。

猜你喜欢

转载自blog.csdn.net/ty5858/article/details/130319072