Ahojte všetci neviete náhodou ako spraviť v c++ program ktorý po spustení si stiahne neaký súbor z netu ale bez zbytočných otázok typu uložit jako a dobré by bolo keby ho aj spustil. neviem ako na to bo to potrebujem do práce ?Proste aby ten program ked ho spustíme si sám stiahol ten subor a aj ho spustil
Fórum › C / C++
Download v c++
Stačí hľadať http:// http://programujte.com/…pomocou-c-c/
http://www.codeguru.com/…owthread.php?…
toto by ti mohlo pomoct
#include <tchar.h>
#include <urlmon.h>
#pragma comment(lib, "urlmon.lib")
int main()
{
HRESULT hr = URLDownloadToFile ( NULL, _T("your web page"), _T("c:/web_page.html"), 0, NULL );
return 0;
}
a vypisuje mi chybu to urlmon.h neviem prečo ale dal som ho tam má cez 3500 riadkov a skušal som 2 typy ši neni odlšny ale nič žiadna zmena píše chybu
Tu je Source Code funkčnééé pri spustený sa tam zadá url adresa a meno súboru ako sa bude volať po stiahnutí. Ale jak to spraviť tak aby sa url a meno súboru zapísalo do source codu a aby sa nemusela url a meno súboru zapisovať po spustení programu. Ako nato??? Za odpoveď. Ďakujem.
TU JE SOURCE CODE
//---------------------------------------------------------------------------------
// Sťahovanie súborov z internetu pomocou WinInet
//---------------------------------------------------------------------------------
#include <iostream>
#include <fstream>
#include <windows.h>
#include <string>
#include <wininet.h>
// hlavičkový súbor knižnice WinInet
//---------------------------------------------------------------------------------
#define VELKOST_VYROVNAVACEJ_PAMATE 256 // veľkosť vyrovnávacej pamäte použitej
// pri čítaní internetového súboru
//---------------------------------------------------------------------------------
#pragma comment(lib,"WinInet.lib") // prilinkovanie knižnice WinInet
//---------------------------------------------------------------------------------
using namespace std;
//---------------------------------------------------------------------------------
int main(int argc, char * argv[])
{
cout << "Stahovanie suborov z internetu" << endl;
string url,subor;
cout << "Zadajte URL suboru: ";
getline(cin,url);
cout << "Zadajte nazov suboru na ulozenie: ";
getline(cin,subor);
// V prvom rade si deklarujeme premenné, ktoré budeme používať
HINTERNET spojenie,internetovySubor;
// Teraz si vytvoríme spojenie, inicializujeme aplikáciu na používanie WinInet
spojenie = InternetOpenA("Moj internetovy prehladavac",
INTERNET_OPEN_TYPE_PRECONFIG, // Predvolené nastavenia
0, // Žiadne proxy
0,
0); // Žiadne príznaky
if (spojenie == 0) // NULL
{
cout << "Nie je mozne inicializovaz WinInet" << endl;
cout << "Kod chyby: " << GetLastError() << endl;
return 1;
}
// Následne otvoríme spojenie so súborom, ktorý je definovaný pomocou URL
internetovySubor = InternetOpenUrlA(spojenie, // Inštancia spojenia
url.c_str(), // URL adresa súboru
0, // Žiadna prídavná HTTP hlavička
0, // Dĺžka prídavnej hlavičky
0, // Žiadne príznaky
0);
if (internetovySubor == 0) // NULL
{
cout << "Nie je mozne vytvorit spojenie so suborom" << endl;
DWORD kodChyby = GetLastError();
cout << "Kod chyby: " << kodChyby << endl;
char chyba[256];
DWORD chybaVelkost = 255;
if (InternetGetLastResponseInfoA(&kodChyby,chyba,&chybaVelkost))
cout << "Popis chyby: " << chyba << endl;
// Nesmieme zabudnúť zatvoriť už inicializovaný handler s WinInet
InternetCloseHandle(spojenie);
return 1;
}
// V tomto kroku môžeme zistiť podrobnosti o súbore
DWORD informacia;
DWORD velkostInformacie = sizeof(DWORD);
// Najskôr si zistíme HTTP status kód (napr. status kód 200 znamená OK, 404 znamená súbor nenájdený)
if (!HttpQueryInfoA(internetovySubor, // Inštancia nami vytvoreného spojenia so súborom
HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, // Požadujeme status ktorý je číselným typom
&informacia, // Sem bude zapísaný výsledok volania
&velkostInformacie, // Veľkosť dátovej jednotky informácie
0))
{
cout << "Nie je mozne zistit kod statusu" << endl;
cout << "Kod chyby: " << GetLastError() << endl;
InternetCloseHandle(internetovySubor);
InternetCloseHandle(spojenie);
return 1;
}
cout << "Status odpovede: " << informacia << endl;
// Ak sa status odpovede nerovná 200, nedostaneme súbor, ktorý sme požadovali
if (informacia != HTTP_STATUS_OK)
{
cout << "Status spojenia NIE je OK" << endl;
InternetCloseHandle(internetovySubor);
InternetCloseHandle(spojenie);
return 1;
}
// Vytvoríme si vyrovnávaciu pamäť, do ktorej budeme ukladať časti súboru
char * vyrovnavaciaPamat = new char[VELKOST_VYROVNAVACEJ_PAMATE];
// Vytvoríme si výstupný súbor
fstream vystupnySubor(subor.c_str(), // Názov výstupného súboru
ios_base::out | ios_base::binary); // Budeme zapisovať v binárnom móde
// Premenná, do ktorej sa bude ukladať koľko sme z internetového súboru prečítali
DWORD precitane = 0;
// Premenná, do ktorej uložíme celkový počet stiahnutých bajtov
DWORD stiahnute = 0;
cout << "Stahujem\t\t\t";
while (InternetReadFile(internetovySubor, // Spojenie na náš internetový súbor
vyrovnavaciaPamat, // Vyrovnávacia pamäť
VELKOST_VYROVNAVACEJ_PAMATE, // Koľko môžeme max. prečítať
&precitane)) // Koľko WinInet prečítal
{
if (precitane == 0) // Už sme všetko prečítali, ukončiť
break;
stiahnute += precitane;
if (informacia != 0) // Ak vieme o veľkosti súboru môžeme vypočítať %
cout << "\rStahujem " << (int)((stiahnute*100)/informacia) << "%";
else // Inak len vypíšeme celkový počet stiahnutých B
cout << "\rStahujem " << stiahnute << " B";
// Zapísať do vsýtupného súboru
vystupnySubor.write((const char*)vyrovnavaciaPamat,precitane);
}
cout << endl << endl;
// Zatvoríme spojenia
InternetCloseHandle(internetovySubor);
InternetCloseHandle(spojenie);
// Zatvoríme výstupný súbor
vystupnySubor.close();
// Nezabudneme vyrovnávaciu pamäť uvoľniť :)
delete [] vyrovnavaciaPamat;
return 0;
}
Něco jako:
string url("ftp://ftp.kdesi.cz/");
string subor("file.exe");
a samozřejmě pak si to nepřemazat zadáváním :)
A pak už jenom spustit třeba přes CreateProcess.
a nemohli by ste mi napísať jednoduchý .cpp subor s tým všetkým tu je adresa na program http://www.lamax.unas.cz/file.exe
bo mi include nefunguju a píšu chybu.......Ďakujem
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Moderátoři diskuze