Witam,
Najpierw może przedstawię mój kod:
[code]
#include <allegro.h>
#include <winalleg.h>
#include <wininet.h>
[...Tutaj jakiś tam kod tworzący okno i wyświetlający napis ....]
HINTERNET hTransfer = NULL; //Zmienna, Uchwyt Transferu
HINTERNET hSession; //Zmienna, Uchwyt Połączenia
HANDLE hFileDownload = NULL; //Zmienna, Uchwyt utworzenia pliku.
DWORD dwBytesAvailable = 0;
DWORD dwRead = 0; //Zmienna z iloscią przeczytanych(pobranych) bajtów
char Buffer[4096]; //Bufor
bool bActive = true, fSuccess = false;
//Ustanawiamy połączenie
hSession = InternetOpen("Updater",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
// Otwieramy transfer
hTransfer = InternetOpenUrl(hSession,"<adres pliku np. dropbox.pl/plik,exe>",NULL,0,0,0);
// Tworzymy plik
hFileDownload = CreateFile("serwer//plik.exe", GENERIC_WRITE, 0,NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
//Rozpoczynamy pobieranie plików
do
{
fSuccess = InternetReadFile(hTransfer, Buffer, 4096,&dwRead); // Pobranie 1 części
if(!fSuccess || dwRead == 0) {
bActive = false;
break;
}
// Zapisanie Bufora do pliku.
DWORD dwWritten = 0;
WriteFile(hFileDownload, Buffer, dwRead, &dwWritten, NULL);
dwRead = 0;
}
while(bActive);
//Zamkniecie połączeń.
CloseHandle(hFileDownload);
InternetCloseHandle(hTransfer);[/code]
1.I programik fajnie działa tylko że jak raz pobierze to potem nie dość że plik pobiera się "Od razu" to nawet gdy rozłączę się z internetem to i tak pobiera, domyślam się ze on wtedy po prostu kopiuje plik z plików tymczasowych.Ale ja chcę aby plik za każdym razem pobierał się od nowa z serwera.
2.Drugi problem to taki ze nie wiem jak zrobić postęp, która zmienna przechowuje postęp pobierania ?
3.Chciałbym też zapytać czy da się ten kod jakoś skrócić ?Bo mam do pobrania ~20 plików za każdym razem gdy uruchomie program więc trochę by to było nieestetyczne.
Czekam na pomoc. :)