3

だから私はビジュアルベーシックで何かをしようとしていますが、それでもそれだけでは十分ではありません。主にインターネットのコードを使用しています。ここで、最初のフォルダーから2番目のフォルダーにいくつかのファイルをコピーして既存のファイルを上書きし、進行状況バーで進行状況を確認したい(すべてのファイルを合わせて約2GB)

解決済み:いくつかのプログラムのソースコードを見つけ、これを機能させるためにいくつかの部分を使用しました

4

1 に答える 1

11

これが私のお気に入りの方法です... 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

スクリーンショット

ここに画像の説明を入力してください

于 2013-01-09T13:34:06.263 に答える