回 帖 发 新 帖 刷新版面

主题:[原创]VB下载网上文件代码(有进度条显示)

'添加 internet transfer control 6.0 和 windows commom controls 6.0
'form代码:

Private Sub cmdGET_Click()
StartDownLoad txtURL
End Sub

Private Sub Form_Load()
savefile.Text = App.Path
End Sub

Private Sub StartDownLoad(ByVal Geturl As String)
Dim spo%, filename$
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(App.Path & "\download") Then Set f = fso.CreateFolder(App.Path & "\download")
spo = InStrRev(Geturl, "/")
filename = Right(Geturl, Len(Geturl) - spo) '获取文件名
savefile.Text = App.Path & "\download\" & filename
Inet1.Execute Geturl, "get"   '开始下载
End Sub

Private Sub Inet1_StateChanged(ByVal State As Integer)
   'State = 12 时,用 GetChunk 方法检索服务器的响应。
   Dim vtData() As Byte
   Select Case State
   '...没有列举其它情况。
   Case icError '11
      '出现错误时,返回 ResponseCode 和 ResponseInfo。
      vtData = Inet1.ResponseCode & ":" & Inet1.ResponseInfo
   Case icResponseCompleted ' 12
      Dim bDone As Boolean: bDone = False
      '取得第一个块。
      vtData() = Inet1.GetChunk(1024, 1)
      DoEvents
      Open savefile.Text For Binary Access Write As #1     '设置保存路径文件后开始保存
      '获取下载文件长度
      If Len(Inet1.GetHeader("Content-Length")) > 0 Then ProgressBar1.Max = CLng(Inet1.GetHeader("Content-Length"))
      
      '循环分块下载
      Do While Not bDone
         Put #1, Loc(1) + 1, vtData()
         vtData() = Inet1.GetChunk(1024, 1)
         DoEvents
         ProgressBar1.Value = Loc(1)   '设置进度条长度
         If Loc(1) >= ProgressBar1.Max Then bDone = True
      Loop
       
      Close #1
      MsgBox "下载完成", vbInformation, "通知"
   End Select
   
End Sub

回复列表 (共48个回复)

21 楼

呵呵,不好意思,本人没学过C呀。

22 楼


好代码!谢谢了。

23 楼

代码基本上没错
不过看到你那个[color=FF00FF][url=http://www.programfan.com/article/showarticle.asp?id=2488]Doevents[/url] [/color]  放的位置,不测试也知道,你的程序在下载东西的时候是关不掉的

24 楼

[quote]代码基本上没错
不过看到你那个[color=FF00FF][url=http://www.programfan.com/article/showarticle.asp?id=2488]Doevents[/url] [/color]  放的位置,不测试也知道,你的程序在下载东西的时候是关不掉的
[/quote]

程序在下载东西的时候当然关不掉的,难道还有关掉程序能继续下载的程序?

25 楼

我的意思是正在下载东西的时候,点右上角那个叉叉,程序不会关闭(窗口会关,但程序结束不了)........................................................................................................

26 楼

哦!

27 楼

一运行就说错误啊,未指定远程计算机,没跑出来啊!!!!

28 楼

不会呀,应该可以的,你是不是缺少了什么东西。

29 楼


简单啊,就是一个cmdGET.commd,一个savefile.Text,Inet1,ProgressBar1
运行后就是这个


[img]http://wumianday.vicp.net/image/2006.7.3/11.jpg[/img]

30 楼

你的下载路径怎么是本地路径呢?用HTTP://打头的

我来回复

您尚未登录,请登录后再回复。点此登录或注册