我用Inet控件写的,有进度条!
http://www14.brinkster.com/weblover/httpDownload.rar

解决方案 »

  1.   

    Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" ( _
                                                    ByVal sAgent As String, _
                                                    ByVal lAccessType As Long, _
                                                    ByVal sProxyName As String, _
                                                    ByVal sProxyBypass As String, _
                                                    ByVal lFlags As Long) As Long
                                                    
    Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" ( _
                                                    ByVal hInternetSession As Long, _
                                                    ByVal sURL As String, _
                                                    ByVal sHeaders As String, _
                                                    ByVal lHeadersLength As Long, _
                                                    ByVal lFlags As Long, _
                                                    ByVal lContext As Long) As Long
                                                    
    Private Declare Function InternetReadFile Lib "wininet.dll" ( _
                                                    ByVal hFile As Long, _
                                                    ByVal sBuffer As String, _
                                                    ByVal lNumBytesToRead As Long, _
                                                    lNumberOfBytesRead As Long) As Integer
                                                    
    Private Declare Function InternetCloseHandle Lib "wininet.dll" ( _
                                                    ByVal hInet As Long) As Integer
    Private Function GetUrlSource(sURL As String) As String
        Dim sBuffer As String * 256, iResult As Integer, sData As String
        Dim hInternet As Long, hSession As Long, lReturn As Long    'get the handle of the current internet connection
        hSession = InternetOpen("vb wininet", 1, vbNullString, vbNullString, 0)
        'get the handle of the url
        If hSession Then
            hInternet = InternetOpenUrl(hSession, sURL, vbNullString, 0, &H4000000, 0)
        End If
        'if we have the handle, then start reading the web page
        If hInternet Then
            'get the first chunk & buffer it.
            iResult = InternetReadFile(hInternet, sBuffer, 256, lReturn)
            sData = sBuffer
            'if there's more data then keep reading it into the buffer
            Do While lReturn <> 0
                iResult = InternetReadFile(hInternet, sBuffer, 256, lReturn)
                sData = sData + Mid(sBuffer, 1, lReturn)
            Loop
        End If
       
        'close the URL
        iResult = InternetCloseHandle(hInternet)     GetUrlSource = VBA.Replace(sData, VBA.Chr(0), "")
    End Function
      

  2.   

    注意Dim sBuffer As String * 256这个限制了字符最多256个,自己调整
      

  3.   

    griefforyou(为你伤心) 你的示例我用了,可是有问题。我试着下载一个523K的文件,只下载了21就到100%,下载其他文件也有类似问题。
      

  4.   

    Private 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
    Public Function DownloadFile(URL As String, LocalFilename As String) As Boolean
        Dim lngRetVal As Long
        lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
        If lngRetVal = 0 Then DownloadFile = True
    End Function
    Private Sub Form_Load()
        'example by Matthew Gates ([email protected])
        DownloadFile "http://www.allapi.net", "c:\allapi.htm"
    End Sub