为什么我用wininet.dll 的 InternetOpenUrlA 取得二进制文件不正确,百分求救!!!
azai 2002-07-03 02:21:31 代码如下:
可以取得文本文件,但取得的图片比实际容量要大??
Private Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Private Const INTERNET_OPEN_TYPE_DIRECT = 1
Private Const INTERNET_OPEN_TYPE_PROXY = 3
Private Const scUserAgent = "VB OpenUrl"
Private Const INTERNET_FLAG_RELOAD = &H80000000
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 hOpen As Long, ByVal sUrl As String, ByVal _
sHeaders As String, ByVal lLength 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 Sub saugen_Click()
Dim bRet As Boolean
Dim sReadBuffer As String * 200
Dim lNumberOfBytesRead As Long
Dim sBuffer As String
Dim FLB As Double
Dim hOpen As Long
Dim hOpenUrl As Long
Dim bDoLoop As Boolean
Dim sUrl As String
sUrl = "http://localhost:8058/b.jpg"
Me.Visible = True
Label2.Caption = "connect to SERVER"
Label2.Refresh
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, _
vbNullString, vbNullString, 0)
hOpenUrl = InternetOpenUrl(hOpen, sUrl, vbNullString, 0, _
INTERNET_FLAG_RELOAD, 0)
bDoLoop = True
While bDoLoop
sReadBuffer = vbNullString
bRet = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), _
lNumberOfBytesRead)
sBuffer = Left$(sReadBuffer, lNumberOfBytesRead)
Open "c:\b.jpg" For Binary As #1
Put 1, FLB + 1, sBuffer
Close
FLB = FLB + Len(sBuffer)
Label2.Caption = FLB & " Bytes bereits gesaugt"
If Not CBool(lNumberOfBytesRead) Then bDoLoop = False
DoEvents
If Not bRet Then
MsgBox "Error " & Err.LastDllError
End If
Wend
If hOpenUrl <> 0 Then InternetCloseHandle (hOpenUrl)
If hOpen <> 0 Then InternetCloseHandle (hOpen)
Label2.Caption = FLB & " [Fertig]"
End Sub