Nappster, если хочешь больше контроля, то вот примерчик:
| Код | //--------------------------------------------------------------------------- #include <vcl.h> #include <WinInet.h> #pragma hdrstop
#include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" #pragma comment(lib, "wininet.lib") TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { }
class WebThread : public TThread { private: AnsiString FURL; AnsiString FFileName; void __fastcall UpdateMethod() { ShowMessage("Done!"); return; } protected: void __fastcall Execute(); public: __fastcall WebThread(bool CreateSuspended) :TThread(CreateSuspended) { } __property AnsiString URL = {read=FURL, write=FURL}; __property AnsiString FileName = {read=FFileName, write=FFileName}; };
void __fastcall WebThread::Execute() { // Session HINTERNET FSession = InternetOpen("Dummy", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); // Error if (!FSession) return;
HINTERNET FURL = InternetOpenUrl(FSession, URL.c_str(), NULL, 0, INTERNET_FLAG_RELOAD, 0); // Error if (!FURL) { InternetCloseHandle(FSession); return; } // Set Pointer InternetSetFilePointer(FURL, 0, NULL, FILE_BEGIN, 0); TFileStream *FStream = new TFileStream(FileName, fmCreate); __try { DWORD BytesRead; char Buf[1024]; do{ if (InternetReadFile(FURL, Buf, sizeof(Buf) - 1, &BytesRead)){ FStream->WriteBuffer(Buf, BytesRead); } }while (BytesRead != 0); } __finally { delete FStream; InternetCloseHandle(FSession); InternetCloseHandle(FURL); } Synchronize(&UpdateMethod); }
//--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { WebThread *Thread = new WebThread(true); Thread->FileName = "C:\\Black.png"; Thread->URL = "http://wmsdk.com/imgs/Black.png"; Thread->FreeOnTerminate = true; Thread->Resume(); } //---------------------------------------------------------------------------
|
|