SHFileOperationCopies, moves, renames, or deletes a file system object. see an example at
Utilizing Windows SHFileOperation API, Advanced
http://www.mvps.org/vbnet/index.html?code/shell/shfileopadv.htm

解决方案 »

  1.   

    其实FSO很容易
    API SHFileOperationPrivate Declare Function SHFileOperation Lib "shell32.dll" Alias " SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
      

  2.   

    Option Explicit
    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 = &H200Type 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 TypeDeclare Function SHFileOperation Lib "Shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long            With fileop
                     .hwnd = Me.hwnd
                     .wFunc = FO_COPY
                     .pFrom = txtFileName.Text
                     .pTo = filename
                     .fFlags = FOF_SIMPLEPROGRESS Or FOF_FILESONLY
                End With
                result = SHFileOperation(fileop)
      

  3.   

    你可以用VB的filecopy命令,还可以用API copyfile、movefile、movefileex
      

  4.   


    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 = &H200Type 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 TypeDeclare Function SHFileOperation Lib "Shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
    下面是文件拷贝的例子;
    Private Sub Command1_Click()
    Dim result As Long, fileop As SHFILEOPSTRUCT
    With fileop
            .hwnd = Me.hwnd
            .wFunc = FO_COPY
            .pFrom = "C:\PROGRAM FILES\MICROSOFT VISUAL BASIC\VB.HLP" & vbNullChar & "C:\PROGRAM FILES\MICROSOFT VISUAL BASIC\README.HLP" & vbNullChar & vbNullChar
           .pFrom = "C:\*.*" & vbNullChar & vbNullChar
            .pTo = "C:\testfolder" & vbNullChar & vbNullChar
            .fFlags = FOF_SIMPLEPROGRESS Or FOF_FILESONLY
    End With
    result = SHFileOperation(fileop)
    If result <> 0 Then
            ' Operation failed
            MsgBox Err.LastDllError
    Else
            If fileop.fAnyOperationsAborted <> 0 Then
                          MsgBox "Operation Failed"
             End If
    End If
    End Sub
    其他也大同小易!