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
注意Private Declare Function SHFileOperation Lib "shell32.dll" _
Alias
"
SHFileOperationA
" 引号里的空格 ,一定要去掉
使用Shell32.dll实现文件操作
本文介绍如何通过Visual Basic中的Shell32.dll库实现文件的复制与移动操作,并展示了具体的代码示例,包括如何定义类型、声明函数以及创建自定义函数来简化这些操作。
649

被折叠的 条评论
为什么被折叠?



