vb 复制文件夹进度问题

小弟才入VB急需拷贝文件进度条来监控完成情况已经连续奋斗搜遍网上5天了也没一个正经的回答按照一个网友的思路pbar是进度条max是最大值,即显示复制完成时的值,设计时在属... 小弟才入VB 急需拷贝文件进度条来监控完成情况 已经连续奋斗搜遍网上5天了 也没一个正经的回答 按照一个网友的思路
pbar是进度条
max是最大值,即显示复制完成时的值,设计时在属性窗口设为100
fcount代表文件夹总数
for i= 1 to fcount
'复制文件第 i 个文件
pbar.value=i/fcount * pbar.max
next i
我把文件夹的文件数换成了文件夹的大小 但是测试之后 发现卡死 因为200多MB的文件 就要循环无数次

rivate Sub Command11_Click()
Dim fso1 As New FileSystemObject
Dim folder1 As Folder
Set folder1 = fso1.GetFolder("c:\b")
MsgBox folder1.Size & "Bytes"

Dim name As String
Dim router As String
name = Text9.Text '把text文本的内容赋值给name
router = "D:\" & name '注:"D:\"这个换成自己想要建立文件夹的路径
If Dir(router, vbDirectory) = "" Then '‘判断是否已经存在同名的文件夹,为空值则新建
MkDir router
Else
MsgBox "D盘已经存在以" & name & "命名的文件夹!"
End If
Dim TaskID As Long ' Task-ID des DOS-Fensters
Dim ProcID As Long ' Prozess-ID des DOS-Fensters
Timer1.Enabled = True
TaskID = Shell("xcopyc:\b D:\备份 /e /y", vbHide)
DoEvents
ProcID = OpenProcess(SYNCHRONIZE, False, TaskID)
Call WaitForSingleObject(ProcID, INFINITE)
Timer1.Enabled = False
For i = 1 To folder1.Size
ProgressBar1.Value = i / folder1.Size * 100000
Next i

MsgBox "老区备份成功,备份在D盘备份文件夹下!"
End Sub

我把pbar.max直接用数字代替之后 读条快了 但是不准确了并且是超出MAX值 是报错的 我求高手发一个菜鸟级的 一步一步知道都加到哪的代码 劳心了 把别人教会相信你自己也有成就感的 另外我说一下TImer1 我任何属性都是默认的 没添加任何代码

有高手的QQ留下也好 谢谢了
展开
 我来答
yichuha
2012-12-11 · TA获得超过256个赞
知道小有建树答主
回答量:212
采纳率:0%
帮助的人:148万
展开全部
你看下《老兵新传:Visual Basic核心编程及通用模块开发》应该是第十一章,也有现成源代码,利用书中介绍的现成函数,一条语句搞定!如可以这样调用复制文件(自动弹出进度窗口):

FMCopyFiles(源文件或文件夹数组,"F:\dest")

其中源文件或文件夹数组为一个string数组,里面放上所有要复制的文件的文件名或文件夹名,也可以既有文件名也有文件夹名。其中FMCopyFiles函数不用你管,把模块直接添加到工程即可。对进度窗口也有控制,这时就多给几个参数:

FMCopyFiles(源文件或文件夹数组,"F:\dest", Fasle) '不显示进度窗口复制

FMCopyFiles(源文件或文件夹数组,"F:\dest", True, True, False) '显示进度窗口复制,出错不提示

可以这样调用移动文件(自动弹出进度窗口):
FMMoveFiles(源文件或文件夹数组,"F:\dest")

可以这样调用删除文件(自动弹出进度窗口):
FMDeleFiles(源文件或文件夹数组)

不放入回收站删除:FMDeleFiles(源文件或文件夹数组,False)

不显示确认对话框:FMDeleFiles(源文件或文件夹数组,False, True, False)

还有用这种方式做的软件是绿色软件(因为是调用API函数实现的),什么OS对象,都不用加载,你编译后的程序不用安装,就一个exe,拷贝到任何机器上直接运行!本书就是这个目的的。
权群28
2012-12-06 · TA获得超过750个赞
知道小有建树答主
回答量:513
采纳率:100%
帮助的人:215万
展开全部
1、你已经用了FilesystemObject了就用这个对象的文件夹和文件对象先计算文件大小以及个数、
2、然后把进度条的Max设置上。
3、然后通过文件对象的复制命令(你用了Shell调用方式)一个一个复制、
4、当然目的文件夹不存在时、还需要自己使用文件夹对象创建需要的文件夹。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
飘叶杂谈
2012-12-06 · TA获得超过536个赞
知道小有建树答主
回答量:1221
采纳率:83%
帮助的人:582万
展开全部
来,我来帮你

620941
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式