[ InternetReadFile() ] manche dateien lassen sich saugen, andere nicht...
-
-> wininet.h
-> wininet.libSchau doch einfach in die MSDN!
cya
-
wininet.h
-
wisst ihr, wie ich die größe der herunterzuladenen datei vor dem downloaden rausbekommen kann ?
-
Probier's mal mit FtpGetFileSize: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/internetreadfile.asp
Kenn mich aber in dem Gebiet überhaupt nicht aus, sorry.
cya
-
MagiC Creator du wirst mir immer korupter!! FtpGetFileSize bei HTTP?
-
Ich hab doch gesagt, ich kenn mich da nicht aus... aber könnte ja funktioniert... und InternetGetFileSize gibt es laut MSDN nicht...
cya
-
HttpQueryInfo mit HTTP_QUERY_CONTENT_LENGTH als Flag
-
Einwandfrei! THX
-
Jetzt ist nur noch das Problem, dass während des Lesens des Files die ganze Anwendung eingefroren wird. Kann man das irgendwie ändern?
-
Threads?
-
Hmm, ok. Klar. Ich wollte nur, da gäbe es eine Callback-Funktion, in der man mitbekommt wieviele Bytes bisher runtergeladen sind. Wegen der Progress-Anzeige, wisst ihr.
-
Wenn man InternetReadFile benutzt ist das doch garkein Problem?
Man kann doch nach jedem Aufruf dieser Funktion die Progress-Bar aktuallisieren.
-
Verstehe ich nicht. In den anderen Aufrufen müsste ich ja angeben können, von wo das File gelesen werden soll. Ich will ja nicht wieder am Anfang beginnen.
-
nein! dafür gibts doch den file pointer. der liest da wo der zeiger drauf gesetzt ist.
-
Verstehe ich nicht so ganz. Sorry. Bin heute auch etwas langsam.
Ich will jetzt z.B. das File ab Position 100 lesen. Wie schreib ich das in InternetReadFile() rein?
-
InternetSetFilePointer(Parameter hab ich jetzt keine Lust rauszusuchen, nur irgendwo 100 angeben :D);
InternetReadFile(immer noch keine Lust);
-
Achso. Woher soll ich denn wissen, dass es dafür eine extra Funktion gibt. Naja, ich wed's mir mal in der MSDN anschauen.
Ist das Ganze nicht vielleicht ein wenig umständlich, wenn man immer wieder die Funktion InternetReadFile() aufruft? Verlängert das nicht die Downloadzeit?
-
na ja InternetSetFilePointer benötigt mal wohl nur zum Resumen oder sowas.
Verlängert das nicht die Downloadzeit?
ja, um 2 ms.
Wenn man lokale Dateien bearbeitet, liest man doch normalweise auch nie die ganze Datei auf einmal ein.
-
Original erstellt von <#>:
na ja InternetSetFilePointer benötigt mal wohl nur zum Resumen oder sowas.Tja, das tue ich ja praktisch, wenn ich immer einzeln Blöcke der Datei lese um nach jedem Block den Progress anzuzeigen.
-
Ich hab da noch ein Problem mit HttpQueryInfo. Also, ich schreibe
DWORD FileSize; DWORD dwDummy = 4; DWORD dwDummy2 = 0; HttpQueryInfo(hFile, HTTP_QUERY_CONTENT_LENGTH, (LPVOID)&FileSize, &dwDummy, &dwDummy2);
Ich setze den ersten Dummy auf 4, weil so groß ja mein Buffer ist. Mit dem letzten Parameter wusste ich nichts anzufangen. Höchstwahrscheinlich liegt es an diesem, warum ich in FileSize nach diesem Aufruf nie die richtige Größe des Files stehen habe. Kann dazu jemand etwas sagen?
<edit> Weitere Info: Die Funktion gibt FALSE zurück. </edit>
[ Dieser Beitrag wurde am 25.01.2003 um 21:39 Uhr von WebFritzi editiert. ]