CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
【经验总结】不能实施并行处理的情况 浅谈并行编程中的任务分解模式
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

vb中怎样显示copy文件时的进度条呀?

楼主wingler()2001-08-14 15:50:04 在 VB / 基础类 提问

就是那种在windows中copy文件时常常出现的进度条。 问题点数:20、回复次数:15Top

1 楼playyuer(退休干部 卧鼠藏虫)回复于 2001-08-14 15:53:12 得分 10

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

2 楼mostar(晨曦)回复于 2001-08-14 15:54:03 得分 0

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

3 楼songyangk(小草)回复于 2001-08-14 15:54:17 得分 0

楼上的说的对。Top

4 楼wingler()回复于 2001-08-14 16:48:22 得分 0

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

5 楼playyuer(退休干部 卧鼠藏虫)回复于 2001-08-14 16:54:12 得分 0

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

6 楼zfy_yes(虚步玲珑)回复于 2001-08-14 16:57:22 得分 5

  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.ocxTop

7 楼mostar(晨曦)回复于 2001-08-14 16:57:26 得分 0

控件俺就不知道了,帮你关注吧,提升人气Top

8 楼wingler()回复于 2001-08-14 17:25:29 得分 0

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

9 楼ltpao(啊炮)回复于 2001-08-14 19:11:26 得分 5

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   Type  
   
  Public   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  
   
  Top

10 楼tidewave(浪潮一号)回复于 2001-08-14 21:00:29 得分 0

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

11 楼pengcheng(鹏程)回复于 2001-08-14 23:57:29 得分 0

vb控件里就有,你找找吧。Top

12 楼wingler()回复于 2001-08-15 17:36:55 得分 0

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

13 楼wingler()回复于 2001-08-15 17:39:36 得分 0

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

14 楼ltpao(啊炮)回复于 2001-08-15 20:15:47 得分 0

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

15 楼caryang(caryang)回复于 2001-08-15 20:33:17 得分 0

ltpao(啊炮),此法果然好用!Top

相关问题

  • 如何在删除、copy文件时显示windows的进度对话框?
  • vb写文件
  • 上传文件进度显示
  • 拷贝文件带进度条
  • 请问在vb中有没有copy文件的功能。
  • VB的COPY文件问题(高分相赠)
  • .vb 文件引用
  • VB判断文件
  • COPY大文件
  • 在vb下,怎样可以把一个文件改名后,copy到一文件夹中?

关键词

  • .net
  • 文件
  • 拷贝
  • fn
  • 进度条
  • progressbar
  • copy
  • dim
  • position
  • as long

得分解答快速导航

  • 帖主:wingler
  • playyuer
  • zfy_yes
  • ltpao

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
惹火投票。。火热进行中...
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
CSDN网站24小时值班电话:13552009689
Copyright © 2000-2009, CSDN.NET, All Rights Reserved
GongshangLogo