Jump to content

[C++] Download a file to computer / send any Info to your WB using WINAPI


Andreigl
 Share

Recommended Posts

Syntax:

HRESULT URLDownloadToFile(
             LPUNKNOWN            pCaller,
             LPCTSTR              szURL,
             LPCTSTR              szFileName,
  _Reserved_ DWORD                dwReserved,
             LPBINDSTATUSCALLBACK lpfnCB
);

Pe noi ne interesează doar: 

LPCTSTR              szURL,    		// Download Link
LPCTSTR              szFileName, 	// FilePath
LPBINDSTATUSCALLBACK lpfnCB		// Download Status

Vreau să fac ceva simplu care accesează un link în funcție de ce introduci tu la tastatură. În acel link, informația descărcată o să fie modificată în funcție de ce anume introduci tu la tastatură.

 

Avem nevoie de următoarele librării:

#include <stdio.h> // Needed for in and output
#include <string> // Needed for std::string
#include <windows.h> // Needed for URLDownloadToFile
#include <Shlobj.h> // Needed for SHGetSpecialFolderPath 
#include <urlmon.h> // Needed for URLDownloadToFile

La tastatură o să introducem numele nostru:

char myName[256];
if(scanf_s("%s", &myName, sizeof(myName)));

Acum vom crea linkul, cu tot cu informația citită de la tastatură.

char szURL[256];
snprintf(
	szURL,
	sizeof(szURL),
	"https://chintzy-welder.000webhostapp.com/Example.php?Nume=%s",
	myName
);

Acum trebuie să aflăm destinația unde fișierul o să fie descărcat. Eu am ales să-l descarc pe Desktop. Pentru asta, o să trebuiască din nou să apelăm la o funcție din WINAPI.

 

char DesktopPath[256];
if(SHGetSpecialFolderPath(
	HWND_DESKTOP,
	DesktopPath,
	NULL,
	FALSE
))
	printf("Desktop Path: Found");
else printf("Desktop Path: ERROR");

 

Acum trebuie să modificăm acest string în așa fel încat să adăugam la sfârșitul lui numele fișierului.

char _FilePath[256];
snprintf(
	_FilePath,
	sizeof(_FilePath);
	"%s\\Exemplu.txt",
	DesktopPath
);

 

Acum trebuie să modificăm acest string în așa fel încat să adăugam la sfârșitul lui numele fișierului.

LPCSTR _lpcURL 	= szURL;
LPCSTR _lpcPATH = _FilePath; 

 

Acum că am creat fiecare variabilă necesară acestei funcții, pur și simplu o apelăm.

HRESULT hResult = URLDownloadToFile(
	NULL,
	_lpcURL,
	_lpcPath,
	0,
	NULL
);

 

Rezultat:

image.png.9e84e69055166c46fe85fbb73d799c88.png

 

Edited by shanker'
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.