代码如下: Code 1uses URLMon, ShellApi 2function DownloadFile(SourceFile, DestFile: string): Boolean; 3begin 4 try 5 Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil) = 0; 6 except 7 Result := False; 8 end; 9end;10procedure TForm1.BitBtn1Click(Sender: TObject);11var12 SourceFile: string;13 DestFile: string;14begin15 SourceFile := 'http://dl.google.com/googletalk/googletalk-setup-zh-CN.exe';16 DestFile := 'D:\软件升级\googletalk-setup-zh-CN.exe';17 if DownloadFile(SourceFile, DestFile) then begin18 ShowMessage(' Download succesful! ');19 ShellExecute(Application.Handle, PChar('open'), PChar(DestFile), PChar(''), nil, SW_NORMAL)20 end21 else22 ShowMessage(' Error while downloading ' + SourceFile)23end;242526 IdHTTP1: TIdHTTP;27 IdAntiFreeze1: TIdAntiFreeze;28 ProgressBar1: TProgressBar;29 BitBtn2: TBitBtn;3031procedure TForm1.BitBtn2Click(Sender: TObject);32var33 MyStream: TMemoryStream;34begin35 IdAntiFreeze1.OnlyWhenIdle := False; //设置使程序有反应.36 MyStream := TMemoryStream.Create;37 try38 IdHTTP1.Get('http://dl.google.com/googletalk/googletalk-setup-zh-CN.exe', MyStream);39 except40 ShowMessage('没有下载成功!');41 MyStream.Free;42 Exit;43 end;44 MyStream.SaveToFile(ExtractFilePath(paramstr(0)) + 'HTTPDemo.zip');45 MyStream.Free;46 ShowMessage('OK');4748end;49procedure TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;50 const AWorkCountMax: Integer);51begin52 //开始下载前,将ProgressBar1的最大值设置为需要接收的数据大小.53 ProgressBar1.Max := AWorkCountMax;54 ProgressBar1.Min := 0;55 ProgressBar1.Position := 0;56end;5758procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;59 const AWorkCount: Integer);60begin61 //接收数据的时候,进度将在ProgressBar1显示出来.62 ProgressBar1.Position := ProgressBar1.Position + AWorkCount;63end;