所以我尝试在visual basic中做一些事情,我开始学习但仍然不够。大多数情况下,我使用的是互联网代码。现在我想将第一个文件夹中的几个文件复制到第二个文件夹并覆盖现有文件,我希望看到进度条上的进度(所有文件一起约为2GB)
解决:我找到了一些程序的源代码,并使用了一些部分来完成这项工作
答案 0 :(得分:8)
以下是我最喜欢的方式...使用SHFileOperation
API
此API将自动显示进度,如下面的屏幕截图所示。
这是一个例子。将此代码粘贴到模块中
Public Declare Function SHFileOperation Lib "shell32.dll" _
Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Public Const FO_COPY = &H2
Public Const FOF_SIMPLEPROGRESS = &H100
Public 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 Long
End Type
Public Sub VBCopyFolder(ByRef strSource As String, ByRef strTarget As String)
Dim op As SHFILEOPSTRUCT
With op
.wFunc = FO_COPY
.pTo = strTarget
.pFrom = strSource
.fFlags = FOF_SIMPLEPROGRESS
End With
'~~> Perform operation
SHFileOperation op
End Sub
然后复制像这样的文件或文件夹
Private Sub Sample()
'~~> Copy Files
Call VBCopyFolder("C:\Sample.Avi", "C:\NewSample.Avi")
'~~> Copy Folders
Call VBCopyFolder("C:\Temp1", "C:\Temp2")
End Sub
<强>截图强>