Option Explicit
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
End Type
Private Declare Function SHFileOperation Lib "shell32.dll" _
Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Private Const FOF_ALLOWUNDO = &H40
Private Const FOF_NOCONFIRMATION = &H10
Private Const FOF_SIMPLEPROGRESS = &H100
Private Const FO_COPY = &H2
Private Const FO_MOVE = &H1
'--------------------------------------------------------------------------------
' 过程: ShellFileCopy
' 描述: 复制文件,并显示“正在复制...”进度条对话框
' 返回: [Boolean] True为复制成功,False为复制失败
'
' 参数:
' Src (String) 要复制的源文件
' Dest (String) 要复制到的位置
' hWnd (Long) 父窗体的句柄(可选)
' NoShowText (Boolean = False) 是否不显示复制的文件名
' NoConfirm (Boolean = False) 是否不显示确认对话框
'
'--------------------------------------------------------------------------------
Public Function ShellFileCopy(Src As String, Dest As String, _
Optional hWnd As Long, _
Optional NoShowText As Boolean = False, _
Optional NoConfirm As Boolean = False) As Boolean
Dim SFO As SHFILEOPSTRUCT
Dim lRet As Long
Dim lflags As Long
lflags = FOF_ALLOWUNDO
If NoShowText Then lflags = lflags Or FOF_SIMPLEPROGRESS
If NoConfirm Then lflags = lflags Or FOF_NOCONFIRMATION
With SFO
.wFunc = FO_COPY
.pFrom = Src
.pTo = Dest
.fFlags = lflags
End With
lRet = SHFileOperation(SFO)
ShellFileCopy = (lRet = 0)
End Function
'--------------------------------------------------------------------------------
' 过程: ShellFileMove
' 描述: 移动文件,并显示“正在移动...”进度条对话框
' 返回: [Boolean] True为移动成功,False为移动失败
'
' 参数:
' Src (String) 要移动的源文件
' Dest (String) 要移动到的位置
' hWnd (Long) 父窗体的句柄(可选)
' NoShowText (Boolean = False) 是否不显示移动的文件名
' NoConfirm (Boolean = False) 是否不显示确认对话框
'
'--------------------------------------------------------------------------------
Public Function ShellFileMove(Src As String, Dest As String, _
Optional hWnd As Long, _
Optional NoShowText As Boolean = False, _
Optional NoConfirm As Boolean = False) As Boolean
Dim SFO As SHFILEOPSTRUCT
Dim lRet As Long
Dim lflags As Long
lflags = FOF_ALLOWUNDO
If NoShowText Then lflags = lflags Or FOF_SIMPLEPROGRESS
If NoConfirm Then lflags = lflags Or FOF_NOCONFIRMATION
With SFO
.wFunc = FO_MOVE
.pFrom = Src
.pTo = Dest
.fFlags = lflags
End With
lRet = SHFileOperation(SFO)
ShellFileMove = (lRet = 0)
End Function
转载自月光软件站