诚心请教!如何用VB从网络上下载数据?不能有弹出窗口叫用户保存的那种要要程序背后下载的那种,最好可以有进度条来显示!
谢谢

解决方案 »

  1.   

    Private Const ERROR_SUCCESS As Long = 0Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As LongPublic Function DownloadToFile(ByVal sURL As String,ByVal sLocalFile as String) as Boolean
    '下载指定网页到某个文件
        DownloadToFile = URLDownloadToFile(0, sURL, sLocalFile, 0, 0) = ERROR_SUCCESS
    End Function
    '----
    以上是不带下载进度的。带进度的也有,但代码比较多贴不上。也是用 这个API, 网上有源码下载的,搜一下。
      

  2.   

    http://www.mndsoft.com 
    刚看了一下我保存的带进度的下载代码,是来自上面的地址,可以去找找。
      

  3.   

    下载文件就是利用 API URLDownloadToFile 函数。它不是孤立的,它与 IE 联手完成任务,而且提供了进度消息接口。 Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long 参数 lpfnCB 就是进度处理回调程序的指针。不幸的是,这个函数需要 IBindStatusCallback 接口绑定 OnProgress 方法,这在 VB 中无法实现。一般做法是调用一个其他语言写的类库,例如 olelib.tlb 来实现。网上搜一下,下载压缩包后,里面有使用说明。
      

  4.   

    使用 Internet 的 api 就可以了
      

  5.   

    用这个控件。
    MICROSOFT INTERNET TRANSFER CONTROL 6.0
    是VB自带的。
    '测试代码前,请在窗体中放入一个 PicBox 及一个Microsoft Internet Transfer Control,名称默认
    Option ExplicitPrivate Sub SetDImg(ByVal UrlImg As String, ByVal TmpImg As String)
    Dim Bilden() As Byte
    '下载
    Bilden() = Inet1.OpenURL(UrlImg, icByteArray)
    '保存文件
    Open TmpImg For Binary Access Write As #1
    Put #1, , Bilden()
    Close #1Shell TmpImg
    End SubPrivate Sub Form_Load()
    SetDImg "http://down.csdn.net/comm/downpage.php?down=LzIwMDYvMDYvMTE4LzI1MTEzMDU0NDIxLmV4ZQ==&aid=158509&open=1&site=2", "c:\121.exe"
    End SubPrivate Sub Inet1_StateChanged(ByVal State As Integer)
    '在这里可以调用GetChunk 方法来获取进度,详细参考MSDN中GetChunk 方法、StateChanged 事件示例一节
    End Sub