vb中怎样显示copy文件时的进度条呀?
就是那种在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





