自己写一个 Copy: 
关于如何用ProgressBar控件实现对拷贝中的文件大小的监测
http://www.csdn.net/expert/topic/60/60966.shtm 或 Windows Shell API

解决方案 »

  1.   

    1、获得文件的大小Lof 文件
    2、用open for binary格式拷贝文件
    3、算出当前百分比
      

  2.   

    mostar能不能写个代码出来呢?
    我不是想用progressbar,而是想用像拷贝文件时候出现的那种windows的进度条,
    就是下面有个进度条,上面有个文件动态的从这个文件夹飞到另一个文件夹的那种
    有没有这种控件的呀?我需要拷贝很多个小文件,所以时间比较长。
      

  3.   

    VB与Windows资源管理器互拷文件
    http://www.csdn.net/develop/read_article.asp?id=6929
      

  4.   

     Dim Fn1 As Long
        Dim Fn2 As Long
        Fn1 = FreeFile
        Open T_SourceFile.Text For Binary Access Read As #Fn1
        Fn2 = FreeFile
        Open T_TargetFile.Text For Binary Access Write As #Fn2
        Form1.MousePointer = 11
        ProgressBar1.Visible = True
        Dim Flength As Long
        Dim Size As Long
        Dim ByteBlock() As Byte
        Dim Position As Long
        Dim J As Long
        Flength = LOF(Fn1)
        Size = 32768
        Position = 0
        Rnd (EnCode)
        Do While Position < Flength
            If Flength - Position < Size Then Size = Flength - Position
            ReDim ByteBlock(1 To Size)
            Get #Fn1, Position + 1, ByteBlock
            For J = 1 To Size
                ByteBlock(J) = ByteBlock(J) Xor Int(Rnd * 256)
            Next J
            Put #Fn2, Position + 1, ByteBlock
            Position = Position + Size
            ProgressBar1.Value = Int(Position / Flength * 100)
        Loop
        Close Fn1, Fn2
    需要一个windows common controls 6.0  就是mscomctl.ocx
      

  5.   

    zfy_yes,谢谢你的代码啦,但是我不是考一个大文件的,而是考很多个小文件,就是考一个目录啦。怎么做到用progressbar呢?其实我更想用windows自带的那种啦。我copyfile时候用的只是一句话:
            Dim fs
            Set fs = CreateObject("Scripting.FileSystemObject")
            fs.copyfile "d:\*.*","e:\"
    请问这样怎么设progressbar的value呢? 
      

  6.   

    Private Const FO_MOVE = &H1
    Private Const FO_COPY = &H2
    Private Const FO_DELETE = &H3
    Private Const FO_RENAME = &H3
    Private Const FOF_NOCONFIRMATION = &H10
    Private Const FOF_SILENT = &H4
    Private Const FOF_NOERRORUI = &H400
    Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
    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 '  only used if FOF_SIMPLEPROGRESS
    End TypePublic Function CopyFile(ByVal sFrom As String, ByVal sTo As String) As Boolean
        Dim udtPath As SHFILEOPSTRUCT
        udtPath.hwnd = 0
        udtPath.wFunc = FO_COPY
        udtPath.pFrom = sFrom
        udtPath.pTo = sTo
        udtPath.fFlags = FOF_NOCONFIRMATION Or FOF_NOERRORUI
        CopyFile = Not CBool(SHFileOperation(udtPath))
    End Function
      

  7.   

    请问一下ltpao你在申请函数时的Function SHFileOperation Lib "shell32.dll",在API中的哪个地方,好像只有win32api.txt这个文件可用
      

  8.   

    vb控件里面有吗?activex控件?还是要其他方法加进去呀?能不能详细说说?
    还能不能简单解释一下这个程序呀?谢谢啦!
      

  9.   

    还有这个程序怎么跟progressbar的value联系起来呀?
      

  10.   

    该函数运行就会显示标准的Windows拷贝窗口,窗口上面是一个动画,下面是一个进度条
    hwnd  窗口句柄
    wFunc 文件操作功能 FO_MOVE 移动,FO_COPY 拷贝,FO_DELETE 删除
    pFrom 源文件
    pTo   目标文件
    fFlags 附加参数