Wie TimeOut beim HTTP-Download setzen?

06/12/2012 - 23:05 von Dieter Strassner | Report spam
hallo VB'ler,

wollte "mal eben" eine Programmverbesserung einbauen.
Leider will nicht so, wie ich mir das zusammengelesen habe:

Private Declare Function InternetSetOption Lib "wininet" Alias
"InternetSetOptionA" ( _
ByVal hInternet As Long, ByVal dwOption As Long, _
ByVal lpBuffer As Long, ByVal dwBufferLength As Long) As Long
Dim lngTransfer As InternetOpenType
Dim iRetVal as Long, hInet as long, hURL as Long
Const dwTimeOut As Long = 600000
Private Const INTERNET_OPTION_RECEIVE_TIMEOUT = 6

'Inet-Connection öffnen:
hInet = InternetOpenA("Strassner:INET", OpenType, Proxy, ProxyBypass, 0) '
Proxy wird hier nicht benutzt
hURL = InternetOpenUrlA(hInet, URL, vbNullString, 0, INET_RELOAD, 0)

' Den InternetSetOption habe ich als einziges hier neu eingefügt, in der
Hoffnung es verlàngert mir den TimeOut auf 10 Min.
'Den Parameter 'hInet' hole aus 'InternetOpenA' (...klingt für mich
plausibel)

iRetVal = InternetSetOption(hInet, INTERNET_OPTION_RECEIVE_TIMEOUT,
dwTimeOut, 4)
If iRetVal = 0 Then
' Hier wird bestàndig Fehler 87 gemeldet. Warum?
MsgBox "Fehler: " & Err.LastDllError & " bei setzen von
INTERNET_OPTION_RECEIVE_TIMEOUT"
Else
' Der Ablauf ab hier funktioniert, nur der TimeOut fehlt mir:
FileNr = FreeFile
Open strTarget For Binary As #FileNr
Do
InternetReadFile hURL, Buffer, Len(Buffer), Bytes
If Bytes = 0 Then Exit Do
Put #FileNr, lngLen + 1, Left$(Buffer, Bytes): lngLen = lngLen +
Bytes
Loop

close der handles, etc.

Habe mich dabei an den Seiten
http://www.vbarchiv.net/tipps/tipp_...trieb.html
und
http://community.developer.authoriz.../td-p/2247
orientiert.

Vielleicht hat jemand einen Tipp für mich oder hat das selbst schon
erfolgreich zum laufen gebracht?
Danke!
Viele Grüße - Dieter

EDV-Kommunikation Strassner e.K.
68623 Lampertheim
Internet: www.strassner.biz
 

Lesen sie die antworten

#1 G.Wietzorek
07/12/2012 - 07:29 | Warnen spam
Am 06.12.2012 23:05, schrieb Dieter Strassner:
hallo VB'ler,

wollte "mal eben" eine Programmverbesserung einbauen.
Leider will nicht so, wie ich mir das zusammengelesen habe:

'Inet-Connection öffnen:
hInet = InternetOpenA("Strassner:INET", OpenType, Proxy, ProxyBypass,
0) ' Proxy wird hier nicht benutzt
hURL = InternetOpenUrlA(hInet, URL, vbNullString, 0, INET_RELOAD, 0)


iRetVal = InternetSetOption(hInet, INTERNET_OPTION_RECEIVE_TIMEOUT,
dwTimeOut, 4)



https://groups.google.com/forum/?fromgroups=#!topic/microsoft.public.vb.controls.internet/JLdVTgT0wd0:

"you
can call InternetSetOption with a NULL handle to set the different
timeouts. When you use a NULL handle it will apply that setting process
wide which means that the ITC will use them as long as it is not changing
them in its code."

Versuchs mal, das ITC ist ja nur ein Wrapper, sollte dann eigentlich so
funktionieren (hab's aber nicht ausprobiert) - und wenn ich das richtig
verstehe, dann vor dem öffnen der Connection aufrufen.

Gert




"Probleme kann man niemals mit derselben Denkweise lösen, durch die sie
entstanden sind."
Albert Einstein

Ähnliche fragen