本帖最后由 a729153251 于 2010-12-13 20:32:10 编辑

解决方案 »

  1.   

    写文件?如果是用二进制模式读写文件,可通过文件长度÷字节数组缓冲区长度获得总块数,当前已写块数与总块数比较获取进度值……不过api我不会
      

  2.   

    要想显示进度,首先你需要知道几个条件.一是总大小有多少.二是当前写入了多少.对于VB6来说,文件操作方面的函数封装得非常好,如果只是显示个进度,貌似没必要用到API.
      

  3.   

    呵呵我不是学VB的
    VB也只是略懂皮毛
    在VB上纯用API来写我也是看得懂的
    我喜欢用汇编调用API来写
    我觉得这样很有趣
    昨天百度了一下
    WriteFile发现第四个参数是写入了多少
    等我测试完了就结贴^-^
    也麻烦给个实例这样我掌握的更快
      

  4.   

    private sub CopyFileEx(byavl SourceFile as string,byval DestFile as string)
        const BlockSize as long = &H100000&    '一次复制1M,大小自己调整试试
        dim bBuff() as byte,pFile as long    redim bbuff(blocksize-1)            '分配固定缓冲区
        pfile=1    open sourcefile for binary as #1
        open destfile for binary as #2        do
                if pfile+blocksize>lof(1) then   '如果不够指定大小的块了,则是结束
                    redim bbuff(lof(1)-pfile)    '剩下的长度计算                get #1,,bbuff()
                    put #2,,bbuff()
                    me.caption="100%"
                    exit do
                end if
                get #1,,bbuff()
                put #2,,bbuff()            pfile=pfile+blocksize
                me.caption=format(pfile/lof(1),"0.00") & "%"    '报告进度
                doevents
            loop    close
    end sub
    这样就差不多了
      

  5.   

    调用很简单:call copyfileex("c:\123.rar","c:\456.rar")标题上就会显示进度.
      

  6.   

    这个我就不清楚了......不过从系统的性能监视器里看,是能从某处获得一段时间内的写入字节的,因此有个思路,就是进行一次已知大小的连续性写入,然后进行统计.看了一下HD Tune的测试过程,也是这样子完成的.