Wininet.h und alles was dazu gehört.....

EngelchenB

Erfahrenes Mitglied
ich hab hier im Forum gesucht und nix gefunden was einem weiter hilft :)

also :

Programmierumgebung : Visual C++.net

ich will eine Datei von einer website runterladen und auf die Festplatte speichern.... Exe und Jpg dateien...

immer eine :)

so und ich hab gesucht und gefunden.... Wininet.h währe wohl das beste o_O

soo und nun zum Problem... nach 100 mal durchlesen der MSDN geht das Programm immernoch net....

meldet alles mögliche wie incorrecte anzahl an parametern (6) aber auf der website SIND 6 angegeben und lauter so zeugs... ich verzweifel hier voll :(

kann mir einer die paar zeilen code, was ja nicht so viel sein kann, das eine datei von einem Server auf die Paltte speichert hier hin posten ? als angewendete beispiele versteh ich sowas viel leichter ^^

währe echt sehr sehr nett und ich werde in den Credits die Person erwähnen *g*

danke schon mal im vorraus
 
Nun das wininet api ist nicht schwer.. ich habs auch mit der MSDN hin bekommen, dann kannst du es auch ;-)

also zuerst musst du die WinINET API libs öffnen
Code:
HINTERNET hInet = InternetOpen("Name der applikation", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);

nun schnell prüfen ob die lib offen is
Code:
if(hInet == NULL) {
 MessageBox(NULL, "Error on Connect", "Could not open WinINET", MB_OK);
 ExitProcess(0);
}

und nun kannst du eigendlich schon los legen

Code:
HINTERNET hFile = InternetOpenUrl(hInet, "URL der datei", NULL, 0, 0, 0);

nun prüfen ob die verbindung steht

Code:
if(hFile == NULL) {
   MessageBox.....
   ExitProcess...
}

ja und dann kannst du anfangen die datei zu lesen...

die lese funktion InternetReadFile funktioniert so ähnlich wie wenn du aus nem FileHandle für ne datei liest

BOOL InternetReadFile(
IN HINTERNET hFile,
IN LPVOID lpBuffer,
IN DWORD dwNumberOfBytesToRead,
OUT LPDWORD lpNumberOfBytesRead
);


zuerst das hFile das du vorhin erstellt hast.. dann einen bufferspeicher wo du die daten rein bekommst, dann die größe des bufferspeichers.. und zu guter letzt einen pointer to dword..nun musst du einfach prüfen.. solange dwNumberOfBytesToRead == *lpNumberOfBytesRead
musst du einfach weiter lesen... keine angst die funktion arbeitet blockend...
außer wenn du das ende der datei erreicht hast.. in dem fall ist *lpNumberOfBytesRead < dwNumberOfBytesToRead...
 
Zurück