亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? u_tdownfile.pas

?? 自動更新程序 自動更新程序
?? PAS
字號:
///////////////////////////////////////////////////////////////////////////////
// 類 名 稱: 文件下載類
// 版    本: TDownFile V0.1.2003.1006
// 作    者: gonghh
// 適用平臺: win2000 測試通過
// 功能說明: 單線程文件下載 
//
///////////////////////////////////////////////////////////////////////////////
unit U_TDownFile;

interface
  uses SysUtils, Windows, UrlMon, ActiveX,Classes,shellapi;

  type  //下載流量狀態回調接口類
    TOnProgressEvent = procedure(ulProgress, ulProgressMax, ulStatusCode: integer;szStatusText:String) of object;
    TOnCompleteEvent = procedure(Source_file,Dest_file:String;blStatus:boolean;ErrMessage:String) of object;

    TBindStatusCallback = class(TObject, IBindStatusCallback)
      protected // IUnknown
        FRefCount: Integer;
        function QueryInterface(const IID: TGUID; out Obj): Integer; stdcall;
        function _AddRef: Integer; stdcall;
        function _Release: Integer; stdcall;
      public  // IBindStatusCallback
        FProgress : TOnProgressEvent;
        FComplete : TOnCompleteEvent;
        function OnStartBinding(dwReserved: DWORD; pib: IBinding): HResult; stdcall;
        function GetPriority(out nPriority): HResult; stdcall;
        function OnLowResource(reserved: DWORD): HResult; stdcall;
        function OnProgress(ulProgress, ulProgressMax, ulStatusCode: ULONG;szStatusText: LPCWSTR): HResult; stdcall;
        function OnStopBinding(hresult: HResult; szError: LPCWSTR): HResult; stdcall;
        function GetBindInfo(out grfBINDF: DWORD; var bindinfo: TBindInfo): HResult; stdcall;
        function OnDataAvailable(grfBSCF: DWORD; dwSize: DWORD; formatetc: PFormatEtc;stgmed: PStgMedium): HResult; stdcall;
        function OnObjectAvailable(const iid: TGUID; punk: IUnknown): HResult; stdcall;
    end;


    TThreadDown =class(TThread) //下載線程類。
      private
        Source_file : string;
        Dest_file   : string;
        StatusCallback : TBindStatusCallback;
      protected
        procedure Execute; override;
      public
        constructor Create(URL,FileName: String ; StatusCB: TBindStatusCallback);overload;
    end;


    TDownFile=class(TComponent) //文件下載控件
      private
        FOnProgress: TOnProgressEvent;
        RevedByte  : TBindStatusCallback;
        FOnComplete: TOnCompleteEvent;
        procedure SetOnProgress(const Value: TOnProgressEvent);  //下載進度
        procedure SetOnComplete(const Value: TOnCompleteEvent);  //下載完成
      public
        constructor Create(AOwner: TComponent);reintroduce;
        destructor Destroy; reintroduce;
        procedure  ThreadDownFile(Source,Dest:string);
        procedure DownFile(Source,Dest:string);
      published
        property  OnComplete:TOnCompleteEvent read FOnComplete write SetOnComplete;
        property  OnProgress:TOnProgressEvent read FOnProgress write SetOnProgress;
    end;
implementation

{ TBindStatusCallback }
function TBindStatusCallback._AddRef: Integer;
begin
  Inc(FRefCount);
  Result := FRefCount;
end;

function TBindStatusCallback._Release: Integer;
begin
  Dec(FRefCount);
  Result := FRefCount;
end;

function TBindStatusCallback.GetBindInfo(out grfBINDF: DWORD;
  var bindinfo: TBindInfo): HResult;
begin
  Result := E_NOTIMPL;
end;

function TBindStatusCallback.GetPriority(out nPriority): HResult;
begin
  Result := E_NOTIMPL;
end;

function TBindStatusCallback.OnDataAvailable(grfBSCF, dwSize: DWORD;
  formatetc: PFormatEtc; stgmed: PStgMedium): HResult;
begin
  Result := E_NOTIMPL;
end;

function TBindStatusCallback.OnLowResource(reserved: DWORD): HResult;
begin
  Result := E_NOTIMPL;
end;

function TBindStatusCallback.OnObjectAvailable(const iid: TGUID;
  punk: IInterface): HResult;
begin
  Result := E_NOTIMPL;
end;

function TBindStatusCallback.OnStartBinding(dwReserved: DWORD;
  pib: IBinding): HResult;
begin
  Result := E_NOTIMPL;
end;

function TBindStatusCallback.OnStopBinding(hresult: HResult;
  szError: LPCWSTR): HResult;
begin
  Result := E_NOTIMPL;
end;

function TBindStatusCallback.QueryInterface(const IID: TGUID;
  out Obj): Integer;
begin
 if GetInterface(IID, Obj) then Result := S_OK
                           else Result := E_NOINTERFACE;
end;

function TBindStatusCallback.OnProgress(ulProgress, ulProgressMax,
  ulStatusCode: ULONG; szStatusText: LPCWSTR): HResult;
begin
  if Assigned(FProgress) then
    FProgress(ulProgress,ulProgressMax,ulStatusCode,szStatusText);
  Result := S_OK;
end;



//=============================================================================

{ TDownFile }

constructor TDownFile.Create(AOwner: TComponent);
begin
  RevedByte:=TBindStatusCallback.Create;
  inherited;
end;

destructor TDownFile.Destroy;
begin
  RevedByte.Free; 
end;

procedure TDownFile.SetOnComplete(const Value: TOnCompleteEvent);
begin
  FOnComplete := Value;
  if Assigned(FOnComplete) then ;
    RevedByte.FComplete := FOnComplete;
end;

procedure TDownFile.SetOnProgress(const Value: TOnProgressEvent);
begin
  FOnProgress := Value;
  if Assigned(FOnProgress) then  ;
    RevedByte.FProgress := FOnProgress;
end;

procedure TDownFile.ThreadDownFile(Source, Dest: string);
var
  ThreadDown:TThreadDown;
begin
  ThreadDown:=TThreadDown.Create(Source, Dest,RevedByte);
  ThreadDown.Resume;
end;

procedure TDownFile.DownFile(Source, Dest: string);
var
  blDownOK:boolean;
  ErrMessage:String;
begin
  ErrMessage:='';
  blDownOK:=false;
  try
    if UrlDownloadToFile(nil,Pchar(Source),Pchar(Dest),0,RevedByte)=0 then
      blDownOK:=true;
  except on e:exception do
    ErrMessage:=e.Message; 
  end;
  if Assigned(RevedByte.FComplete) then
     RevedByte.FComplete(Source,Dest,blDownOK,ErrMessage);
end;


//==============================================================================
{ TThreadDown }

constructor TThreadDown.Create(URL, FileName: String;StatusCB: TBindStatusCallback);
begin
  Source_file := URL;
  Dest_file   := FileName;
  StatusCallback := StatusCB;
  FreeOnTerminate:=true;
  inherited Create(true);
end;

procedure TThreadDown.Execute;
var
  blDownOK:boolean;
  ErrMessage:String;
begin
  ErrMessage:='';
  blDownOK:=false;
  try
    if UrlDownloadToFile(nil,Pchar(Source_file),Pchar(Dest_file),0,StatusCallback)=0 then
      blDownOK:=true;
  except on e:exception do
    ErrMessage:=e.Message; 
  end;
  if Assigned(StatusCallback.FComplete) then
     StatusCallback.FComplete(Source_file,Dest_file,blDownOK,ErrMessage);
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久婷婷国产精品综合| 欧美变态tickle挠乳网站| 欧美日韩一二三区| 久久精品欧美一区二区三区麻豆| 亚洲一区二区美女| 国产高清无密码一区二区三区| 欧美色区777第一页| 中文字幕佐山爱一区二区免费| 看电影不卡的网站| 在线区一区二视频| 中文字幕av一区二区三区高| 九九精品视频在线看| 欧美人与禽zozo性伦| 亚洲欧洲性图库| 国产成人午夜精品5599 | 欧美综合天天夜夜久久| 久久婷婷色综合| 青青草精品视频| 欧美老年两性高潮| 亚洲综合自拍偷拍| 91在线国内视频| 中文字幕中文字幕在线一区| 高清不卡一区二区| 久久精品一区四区| 国产一区二区在线观看免费 | 色综合天天综合| 国产色一区二区| 国产一区二区三区高清播放| 91精品国产一区二区三区| 一区二区激情小说| 在线精品视频一区二区| 亚洲欧美激情一区二区| 色婷婷激情久久| 亚洲一区二区高清| 在线观看国产日韩| 日本午夜一本久久久综合| 777奇米成人网| 夜夜爽夜夜爽精品视频| 欧美色手机在线观看| 日韩午夜精品电影| 久久久不卡网国产精品一区| 亚洲精品美腿丝袜| 欧美综合欧美视频| 日韩成人dvd| 91精选在线观看| 麻豆freexxxx性91精品| 亚洲精品一线二线三线无人区| 99久久精品国产精品久久| 国产精品天干天干在观线| 一区二区三区美女| 亚洲激情在线播放| 国产精品色眯眯| 91亚洲男人天堂| 亚洲va韩国va欧美va| 538在线一区二区精品国产| 中文字幕欧美国产| 色偷偷久久一区二区三区| 日韩欧美自拍偷拍| 国产成人在线视频网址| 亚洲欧洲在线观看av| 欧美丝袜自拍制服另类| 男人的j进女人的j一区| 国产精品天天看| 欧美日韩在线观看一区二区| 久久国产成人午夜av影院| 中文字幕高清一区| 欧美精品久久99久久在免费线| 久久 天天综合| 亚洲精品久久嫩草网站秘色| 日韩欧美中文字幕制服| 99国产欧美另类久久久精品| 日本女人一区二区三区| 国产精品福利一区| 日韩一区二区电影网| fc2成人免费人成在线观看播放| 亚洲成人免费观看| 国产精品久久免费看| 欧美一区二区在线视频| 9久草视频在线视频精品| 久久精品国产精品亚洲精品| 亚洲人成亚洲人成在线观看图片 | 综合久久久久综合| 日韩视频一区二区三区| 色哟哟国产精品| 国产成人亚洲精品狼色在线| 奇米888四色在线精品| 亚洲精品福利视频网站| 国产日韩影视精品| 欧美电影免费提供在线观看| 精品1区2区3区| 91在线观看高清| 国产激情视频一区二区三区欧美 | 久久精品视频免费| 日韩一级二级三级精品视频| 在线欧美日韩国产| 粉嫩嫩av羞羞动漫久久久 | 日本一区二区三区四区| 日韩一级黄色片| 欧美电影影音先锋| 色婷婷国产精品综合在线观看| 国产成人亚洲精品青草天美| 国产尤物一区二区在线 | 亚洲国产一区视频| 一区二区免费视频| 亚洲黄色在线视频| 国内精品在线播放| 国产精品天天看| 欧美一区二区三区日韩视频| 欧美三级中文字幕| 日本乱人伦aⅴ精品| 成人av网站大全| 97超碰欧美中文字幕| 成人黄色国产精品网站大全在线免费观看| 激情av综合网| 国产伦精一区二区三区| 国产精品资源网站| 韩国中文字幕2020精品| 激情久久五月天| 国产精品一区二区黑丝| 国产99一区视频免费| 国产999精品久久| 99视频精品免费视频| 97久久精品人人澡人人爽| 91在线观看下载| 欧美中文字幕一区二区三区| 欧美区视频在线观看| 欧美一区在线视频| 欧美精品一区二区高清在线观看| 精品国产一区二区国模嫣然| 久久精品一区二区三区av| 成人免费视频国产在线观看| av一区二区三区黑人| 色综合久久综合中文综合网| 国产一本一道久久香蕉| 一区在线播放视频| 亚洲欧美电影一区二区| 亚洲午夜在线视频| 麻豆免费精品视频| 国产电影一区在线| 97se亚洲国产综合自在线不卡| 一本到一区二区三区| 日韩一区二区三区四区| www国产成人免费观看视频 深夜成人网| 国产亚洲一区二区在线观看| 中文字幕一区二区三| 亚洲国产精品嫩草影院| 国产一区二区在线观看视频| bt欧美亚洲午夜电影天堂| 欧美精品在线一区二区三区| 久久色视频免费观看| 亚洲日本在线视频观看| 欧美aaaaaa午夜精品| 91色.com| 精品国产91亚洲一区二区三区婷婷| 国产精品日韩精品欧美在线| 亚洲国产精品人人做人人爽| 99久久国产综合精品女不卡| 国产欧美1区2区3区| 精品久久久久久久久久久久包黑料| 91精品国产手机| 国产乱码精品一区二区三区五月婷| 日韩电影免费在线看| av电影一区二区| 欧美一区二区三区白人 | 91亚洲精品久久久蜜桃| 欧美大片一区二区三区| 国产精品色眯眯| 美日韩一级片在线观看| 在线一区二区观看| 国产精品丝袜在线| 国内外成人在线| 欧美三区在线观看| 成人免费小视频| 国产夫妻精品视频| 日韩免费看的电影| 亚洲国产综合色| 色诱亚洲精品久久久久久| 欧美国产精品中文字幕| 国产一区二区三区在线观看免费 | 91麻豆.com| 久久婷婷成人综合色| 国产精品私房写真福利视频| www.色精品| 波波电影院一区二区三区| 欧美大胆人体bbbb| 亚洲国产日韩一级| 91黄视频在线观看| 久久精品一二三| 精品在线观看视频| 9191国产精品| 午夜伦欧美伦电影理论片| 色天天综合色天天久久| 亚洲国产精品成人综合 | 国产精品久久久久久久蜜臀| 久久精子c满五个校花| 国产在线观看免费一区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 欧美中文一区二区三区| 国产精品免费视频一区| 欧美色图激情小说|