Public Const FO_MOVE As Long = &H1
Public Const FO_COPY As Long = &H2
Public Const FO_DELETE As Long = &H3
Public Const FO_RENAME As Long = &H4
Public Const FOF_MULTIDESTFILES As Long = &H1
Public Const FOF_CONFIRMMOUSE As Long = &H2
Public Const FOF_SILENT As Long = &H4
Public Const FOF_RENAMEONCOLLISION As Long = &H8
Public Const FOF_NOCONFIRMATION As Long = &H10
Public Const FOF_WANTMAPPINGHANDLE As Long = &H20
Public Const FOF_CREATEPROGRESSDLG As Long = &H0
Public Const FOF_ALLOWUNDO As Long = &H40
Public Const FOF_FILESONLY As Long = &H80
Public Const FOF_SIMPLEPROGRESS As Long = &H100
Public Const FOF_NOCONFIRMMKDIR As Long = &H200
Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Long
fAnyOperationsAborted As Long
hNameMappings As Long
lpszProgressTitle As String
End Type
Declare Function SHFileOperation Lib "Shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
command1_click()
Dim result As Long, fileop As SHFILEOPSTRUCT
With fileop
.hwnd = Me.hwnd
.wFunc = FO_COPY
.pFrom = Text4.Text & "\*.*" & vbNullChar & vbNullChar
.pTo = "d:\ak" & vbNullChar & vbNullChar
.fFlags = FOF_SIMPLEPROGRESS Or FOF_FILESONLY
End With
result = SHFileOperation(fileop)
MsgBox "完成"
Unload Me
If result <> 0 Then
' Operation failed
'MsgBox Err.LastDllError
MsgBox "未完成"
Unload Me
Else
If fileop.fAnyOperationsAborted <> 0 Then
MsgBox "Operation Failed"
End If
End If
完成--------
API功能詳解:
使用API函數(shù)SHFileOperation,這個(gè)函數(shù)可以同時(shí)拷貝、刪除、改名或移動(dòng)多個(gè)文件,甚至整個(gè)目錄。如果你愿意,還可以顯示相應(yīng)的動(dòng)畫對(duì)話框,功能十分強(qiáng)大。SHFileOperation的參數(shù)是一個(gè)SHFILEOPSSTRUCT結(jié)構(gòu)。這個(gè)結(jié)構(gòu)中各成員的含義如下:
- hwnd - 顯示文件操作對(duì)話框的窗口句柄
- wFunc - 表示要進(jìn)行的操作,可以取以下值:
- FO_COPY - 拷貝文件。所要拷貝的文件由pFrom成員指定,目的地址有pTo成員指定。
- FO_DELETE - 刪除pFrom指定的文件。(pTo 被忽略。)
- FO_MOVE - 移動(dòng)文件。所要移動(dòng)的文件由pFrom成員指定,目的地址有pTo成員指定。
- FO_RENAME - 改名pFrom指定的文件。
- pFrom - 指定文件名的緩沖區(qū)的地址。必須以Chr(0)結(jié)尾。如果包括多個(gè)文件以Chr(0)分割。
- pTo - 指定目的文件名或目錄的緩沖區(qū)的地址。必須以Chr(0)結(jié)尾。如果使用了FOF_MULTIDESTFILES標(biāo)志,可以包括多個(gè)文件名,文件名之間以Chr(0)分割。
- fFlags - 標(biāo)志:
- FOF_ALLOWUNDO - 允許恢復(fù)
- FOF_FILESONLY - 如果使用了*.*,只操作文件。
- FOF_MULTIDESTFILES - pTo成員可以為多個(gè)目的文件。
- FOF_NOCONFIRMATION - 不顯示確認(rèn)對(duì)話框。
- FOF_NOCONFIRMMKDIR - 不確認(rèn)是否建立目錄。
- FOF_NOERRORUI - 如果有錯(cuò)誤,不顯示用戶界面。
- FOF_RENAMEONCOLLISION - 如果目的文件已經(jīng)存在,給要處理的文件一個(gè)新名字。
- FOF_SILENT - 不顯示進(jìn)度對(duì)話框。
- FOF_SIMPLEPROGRESS - 顯示進(jìn)度框,但不顯示文件名。
- fAnyOperationsAborted -如果用戶退出,該成員為TRUE,否則為FALSE。
- lpszProgressTitle - 進(jìn)度框的標(biāo)題,只有選擇了FOF_SIMPLEPROGRESS標(biāo)志才有效。
聯(lián)系客服