Private Type SHFILEOPSTRUCT hWnd As Long wFunc As Long pFrom As String pTo As String fFlags As Integer fAborted As Boolean hNameMaps As Long sProgress As String End Type Private Const FO_COPY = &H2& Private Const FOF_RENAMEONCOLLISION = &H8& Private Const FOF_NOCONFIRMATION = &H10& Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long Private Sub Form_Load() Dim SHFileOp As SHFILEOPSTRUCT With SHFileOp .wFunc = FO_COPY .pFrom = "d:\aa\*.*" '源目录 .pTo = "d:\tmp" '目的 .fFlags = FOF_NOCONFIRMATION Or FOF_RENAMEONCOLLISION End With SHFileOperation SHFileOp End Sub
用fso不可以吗??
hWnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAborted As Boolean
hNameMaps As Long
sProgress As String
End Type
Private Const FO_COPY = &H2&
Private Const FOF_RENAMEONCOLLISION = &H8&
Private Const FOF_NOCONFIRMATION = &H10&
Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Private Sub Form_Load()
Dim SHFileOp As SHFILEOPSTRUCT
With SHFileOp
.wFunc = FO_COPY
.pFrom = "d:\aa\*.*" '源目录
.pTo = "d:\tmp" '目的
.fFlags = FOF_NOCONFIRMATION Or FOF_RENAMEONCOLLISION
End With
SHFileOperation SHFileOp
End Sub
- 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 - 允许恢复
- FOF_FILESONLY - 如果使用了*.*,只操作文件。
- FOF_MULTIDESTFILES - pTo成员可以为多个目的文件。
- FOF_NOCONFIRMATION - 不显示确认对话框。
- FOF_NOCONFIRMMKDIR - 不确认是否建立目录。
- FOF_NOERRORUI - 如果有错误,不显示用户界面。
- FOF_RENAMEONCOLLISION - 如果目的文件已经存在,给要处理的文件一个新名字。
- FOF_SILENT - 不显示进度对话框。
- FOF_SIMPLEPROGRESS - 显示进度框,但不显示文件名。
- fAnyOperationsAborted -如果用户退出,该成员为TRUE,否则为FALSE。
- lpszProgressTitle - 进度框的标题,只有选择了FOF_SIMPLEPROGRESS标志才有效。