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



## EngelchenB (26. September 2003)

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 

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


----------



## chibisuke (26. September 2003)

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

```
HINTERNET hInet = InternetOpen("Name der applikation", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
```

nun schnell prüfen ob die lib offen is

```
if(hInet == NULL) {
 MessageBox(NULL, "Error on Connect", "Could not open WinINET", MB_OK);
 ExitProcess(0);
}
```

und nun kannst du eigendlich schon los legen


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

nun prüfen ob die verbindung steht


```
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...


----------



## EngelchenB (27. September 2003)

danke werd ich am Montag mal versuchen 

so ähnlich hatte ich es auch.... mhhh naja


----------

