Всем привет! Нашел функцию для скачивания из интернета: Code: function GetInetFile (const fileURL, FileName: String): boolean; const BufferSize = 1024; var hSession, hURL: HInternet; Buffer: array[1..BufferSize] of Byte; BufferLen: DWORD; f: File; sAppName: String; begin Result:=False; sAppName := ExtractFileName(Application.ExeName); hSession :=InternetOpen(PChar(sAppName), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); try hURL := InternetOpenURL(hSession, PChar(fileURL), nil, 0, 0, 0); try AssignFile(f, FileName); Rewrite(f,1); repeat InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen); BlockWrite(f, Buffer, BufferLen) until BufferLen = 0; CloseFile(f); Result:=True; finally InternetCloseHandle(hURL) end finally InternetCloseHandle(hSession) end end; Подскажите как доработать его, чтобы он показывал процент скачивание в progressbar?
вот тебе пример функции из моего модуля. Думаю разберешься, там все еть. Code: function TApiGetHTTP.Get(const AURL: string; AResponseContent: TStream): boolean; const BufferSize = 1024; var Buffer : array[0..BufferSize] of Byte; BufferLen: DWORD; Header : string; hSession, hConnect, hRequest : hInternet; FSize : Int64; begin { Подготавливаем заголовок } If FUserAgent = '' Then FUserAgent := 'Delphi/7.0'; If FAccept <> '' Then Header := Header + 'Accept: ' + FAccept + #10; If FAcceptEncoding <> '' Then Header := Header + 'Accept-Encoding: ' + FAcceptEncoding + #10; If FConnection <> '' Then Header := Header + 'Connection: ' + FConnection + #10; If FContentType <> '' Then Header := Header + 'Content-Type: ' + FContentType + #10; If FKeepAlive <> '' Then Header := Header + 'Keep-Alive: ' + FKeepAlive + #10; If FAcceptCharset <> '' Then Header := Header + 'Accept-Charset: ' + FAcceptCharset + #10; If (FRangeStart <> '') and (FRangeEnd <> '') Then begin Header := Header + 'Range: bytes=' + FRangeStart + '-' + FRangeEnd; end; // Если есть куки, то приделываем их к заголовку If FCookie <> '' Then Header := Header + 'Cookie: ' + FCookie; hSession := InternetOpen(PChar(FUserAgent), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); hConnect := InternetConnect(hSession, pchar(GetHost(AURL)), 80, nil, nil, INTERNET_SERVICE_HTTP, 0, 0); hRequest := HttpOpenRequest(hConnect, PChar('GET'), PChar(Copy(AURL, Pos('.ru', AURL) +4, Length(AURL))), 'HTTP/1.1', nil, nil, 0, 0); HttpSendRequest(hRequest, PChar(Header), Length(Header), nil, 0); FSize := GetUrlInfo(HTTP_QUERY_CONTENT_LENGTH, AURL); TriggerOnWorkBegin(FSize); repeat Result := InternetReadFile(hRequest, @Buffer, SizeOf(Buffer), BufferLen); AResponseContent.Write(Buffer, SizeOf(Buffer)); TriggerOnWork(AResponseContent.Position); until BufferLen = 0; InternetCloseHandle(hRequest); InternetCloseHandle(hSession); TriggerOnWorkEnd(nil); end;