VB利用SHFileOperation实现拷贝、删除、重命名文件

在这里插入图片描述
Private Declare Function SHFileOperation Lib “shell32.dll” Alias “SHFileOperationA” (lpFileOp As SHFILEOPSTRUCT) As Long
Private 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 String 'only used if FOF_SIMPLEPROGRESS
End Type

 - hwnd - 显示文件操作对话框的窗口句柄
 - wFunc - 表示要进行的操作,可以取以下值:
 - FO_COPY - 拷贝文件。所要拷贝的文件由pFrom成员指定,目的地址有pTo成员指定。
 - FO_DELETE - 删除pFrom指定的文件。(pTo 被忽略。)
 - FO_MOVE - 移动文件。所要移动的文件由pFrom成员指定,目的地址有pTo成员指定。
 - FO_RENAME - 改名pFrom指定的文件。
 - pFrom - 指定文件名的缓冲区的地址。必须以Chr(0)结尾。如果包括多个文件以Chr(0)分割。
 - pTo - 指定目的文件名或目录的缓冲区的地址。必须以Chr(0)结尾。如果使用了FOF_MULTIDESTFILES标志,可以包括多个文件名,文件名之间以Chr(0)分割。
 - fFlags - 标志:
 - FOF_ALLOWUNDO - 保存UNDO信息,以便在回收站中恢复文件
 - FOF_FILESONLY - 如果使用了*.*,只操作文件。
 - FOF_MULTIDESTFILES - pTo成员可以为多个目的文件。
 - FOF_NOCONFIRMATION - 不显示确认对话框。
 - FOF_NOCONFIRMMKDIR - 不确认是否建立目录。
 - FOF_NOERRORUI - 如果有错误,不显示用户界面。
 - FOF_RENAMEONCOLLISION - 如果目的文件已经存在,给要处理的文件一个新名字。
 - FOF_SILENT - 不显示进度对话框。
 - FOF_SIMPLEPROGRESS - 显示进度框,但不显示文件名。
 - fAnyOperationsAborted -如果用户退出,该成员为TRUE,否则为FALSE。
 - lpszProgressTitle - 进度框的标题,只有选择了FOF_SIMPLEPROGRESS标志才有效。

FORM:

Private Sub Command6_Click()
Dim URL As String
URL = OpenImaget(True)
If URL <> “” Then
Text4.Text = URL
End If
End Sub

Private Sub Command7_Click()
If PathFileExists(Text4.Text) = 0 Then If MsgBox(“不是一个有效的文件路径” & vbCrLf & “是否打开浏览?”, vbQuestion + vbYesNo, “错误”) = vbYes Then Command6_Click: Text4.SetFocus: Exit Sub Else Text4.SetFocus: Exit Sub
If Text5.Text = “” Then MsgBox “新的文件名称不能为空!”, vbExclamation + vbOKOnly, “错误”: Text5.SetFocus: Exit Sub
If Rename(Text4.Text, Text5.Text) Then
MsgBox “成功修改文件名”, vbExclamation + vbOKOnly, “提示”
Else
MsgBox “重命名失败”, vbExclamation + vbOKOnly, “提示”
End If
Text4.Text = “”: Text5.Text = “”
End Sub

Private Sub Command5_Click()
If PathFileExists(Text3.Text) = 0 Then If MsgBox(“不是一个有效的文件路径” & vbCrLf & “是否打开浏览?”, vbQuestion + vbYesNo, “错误”) = vbYes Then Command4_Click: Text3.SetFocus: Exit Sub Else Text3.SetFocus: Exit Sub
If Option1(0).Value Then If MsgBox(“真的要将文件删除到回收站吗?”, vbQuestion + vbYesNo, “删除”) = vbNo Then Exit Sub
If DeleteFile(Text3.Text, IIf(Option1(0).Value, 0, 1)) Then
MsgBox IIf(Option1(0).Value, “成功删除文件到回收站!”, “成功将文件从计算机永久性删除!”), vbExclamation + vbOKOnly, “提示”
Else
MsgBox “删除失败”, vbExclamation + vbOKOnly, “提示”
End If
Text3.Text = “”
End Sub

Private Sub Command3_Click()
If PathFileExists(Text1.Text) = 0 Then If MsgBox(“不是一个有效的文件路径” & vbCrLf & “是否打开浏览?”, vbQuestion + vbYesNo, “错误”) = vbYes Then Command1_Click: Text1.SetFocus: Exit Sub Else Text1.SetFocus: Exit Sub
If PathFileExists(Text2.Text) = 0 Then If MsgBox(“目标路径不是一个有效的地址” & vbCrLf & “是否打开浏览?”, vbQuestion + vbYesNo, “错误”) = vbYes Then Command2_Click: Text2.SetFocus: Exit Sub Else Text2.SetFocus: Exit Sub
If CopyFile(Text1.Text, Text2.Text & “” & VBA.Mid(Text1.Text, InStrRev(Text1.Text, “”), Len(Text1.Text))) Then
MsgBox “拷贝成功”, vbExclamation + vbOKOnly, “提示”
Else
MsgBox “拷贝失败”, vbExclamation + vbOKOnly, “提示”
End If
End Sub

Private Sub Command1_Click()
Dim URL As String
URL = OpenImaget(True)
If URL <> “” Then
Text1.Text = URL
End If
End Sub

Private Sub Command2_Click()
Dim WJJurl As String
WJJurl = GetFolderName()
If WJJurl <> “” Then
Text2 = WJJurl
End If
End Sub

Private Sub Command4_Click()
Dim URL As String
URL = OpenImaget(True)
If URL <> “” Then
Text3.Text = URL
End If
End Sub

Private Sub Form_Load()
Me.Caption = “复制、删除、重命名 文件”
Text1 = “”
Text2 = “”
Text3 = “”
Text4 = “”
Text5 = “”
End Sub

工程包下载地址:https://download.csdn.net/download/ty5858/85595902

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

键盘上的舞指

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值