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

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

?? downloadform_u.pas

?? EmbeddedWB_D5-D2009_Version_14.67.8 最新版本,開發WEB瀏覽器.
?? PAS
字號:
//*************************************************************************
//                                                                        *
//                     IE Downloag Mgr                                    *
//                       For Delphi                                       *
//                                                                        *
//                     Freeware Demo                                      *
//  Developing Team:                                                      *
//  Eran Bodankin -bsalsa(bsalsa@bsalsa.com)                              *
//  Mathias Walter (mich@matze.tv)                                        *
//                                                                        *
//                                                                        *
//  Updated versions:                                                     *
//               http://www.bsalsa.com                                    *
//*************************************************************************
{LICENSE:
THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND,
EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED
WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE
AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE
AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE
OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED
OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS,
INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR
OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS,
AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY
DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE.

You may use, change or modify the component under 4 conditions:
1. In your website, add a link to "http://www.bsalsa.com"
2. In your application, add credits to "Embedded Web Browser"
3. Mail me  (bsalsa@bsalsa.com) any code change in the unit
   for the benefit of the other users.
4. Please, consider donation in our web site!
{*******************************************************************************}

unit DownloadForm_U;

interface

uses
  Windows, SysUtils, Classes, Controls, Forms, Dialogs, StdCtrls,
  IEDownload, ComCtrls, UrlMon, ActiveX, DownloadRequestForm,
  ShellApi, Menus, ExtCtrls, IEDownloadTools, Graphics;

const
  SEE_MASK_NOZONECHECKS = $00800000;

type
  TDownloadForm = class(TForm)
    IEDownload: TIEDownload;
    pmDownloadItem: TPopupMenu;
    miCancel: TMenuItem;
    miOpen: TMenuItem;
    Panel1: TPanel;
    btnCancel: TButton;
    chkAutoClose: TCheckBox;

    ListView: TListView;
    cbRemoveComp: TCheckBox;
    cbExecute: TCheckBox;
    procedure FormDestroy(Sender: TObject);
    procedure btnCancelClick(Sender: TObject);
    procedure miCancelClick(Sender: TObject);
    procedure ListViewContextPopup(Sender: TObject; MousePos: TPoint;
      var Handled: Boolean);
    procedure miOpenClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure IEDownloadStartBinding(var Sender: TBSCB; var Cancel: Boolean;
      pib: IBinding);
    procedure IEDownloadProgress(Sender: TBSCB; ulProgress, ulProgressMax,
      ulStatusCode, FileSize: Cardinal; szStatusText: PWideChar; Downloaded, ElapsedTime,
      Speed, RemainingTime, Status, Percent: string);
    function IEDownloadBeginningTransaction(Sender: TBSCB; szURL,
      szHeaders: PWideChar; dwReserved: Cardinal;
      out szAdditionalHeaders: PWideChar): HRESULT;
    procedure cbRemoveCompClick(Sender: TObject);
    procedure cbExecuteClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure IEDownloadComplete(Sender: TIEDownload; aFileNameAndPath,
      aFileName, aFolderName, aExtension: WideString;
      const ActiveConnections: Integer);
  private
    { Private declarations }

    procedure Execute(FName: WideString);
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  public
    { Public declarations }
    procedure FileDownload(inUrl: string; pmk: IMoniker; pbc: IBindCtx);

  end;

var
  DownloadForm: TDownloadForm;

implementation

{$R *.dfm}

procedure TDownloadForm.cbExecuteClick(Sender: TObject);
var
  lvItem: TListItem;
begin
    if (cbExecute.Checked) and (ListView.Selected.Index > 0) and
    (ListView.Selected.SubItems[0]= 'Done.') then
    begin
      lvItem := ListView.Selected;
      Execute(IEDownload.DownloadFolder+ lvItem.Caption);
    end;
end;

procedure TDownloadForm.cbRemoveCompClick(Sender: TObject);
var
  idx: integer;
begin
  if (cbRemoveComp.checked) then
  begin
     for idx := 0 to ListView.Items.Count - 1 do
     begin
       if ListView.Items[idx].SubItems[0]= 'Done.' then
         begin
          TProgressBar(ListView.Items[idx].Data).Free;
          ListView.Items.Delete(idx);
         end;
     end;
  end;
end;

procedure TDownloadForm.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
end;

procedure TDownloadForm.FormDestroy(Sender: TObject);
begin
  DownloadForm := nil;
end;

procedure TDownloadForm.btnCancelClick(Sender: TObject);
begin
  IEDownload.CancelAll;
  Close;
end;

procedure TDownloadForm.FileDownload(inUrl: string; pmk: IMoniker; pbc:
  IBindCtx);
begin
  if (not Visible) then
    Show
  else
    BringToFront;
  IEDownload.Download(inUrl, pmk, pbc);
end;

procedure TDownloadForm.Execute(FName: WideString);
var
  lpExecInfo: TShellExecuteInfo;
begin
  ZeroMemory(@lpExecInfo, sizeof(lpExecInfo));
  lpExecInfo.cbSize := sizeof(lpExecInfo);
  lpExecInfo.fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_NOZONECHECKS;
  lpExecInfo.Wnd := Self.Handle;
  lpExecInfo.lpVerb := 'open'; // use default handling
  lpExecInfo.lpFile := PWideChar(FName);
  lpExecInfo.nShow := SW_SHOWNORMAL;
  if (not ShellExecuteEx(@lpExecInfo)) then
    ShowMessage(SysErrorMessage(GetLastError()));
end;

function FindStringInLV(listItems: TListItems; inString: string): Integer;
var
  idx: Integer;
begin
  Result := -1;
  for idx := 0 to listItems.Count - 1 do
    if (listItems[idx].Caption = inString) then
    begin
      Result := idx;
      Break;
    end;
end;

function FindThreadIDInLV(listItem: TListItems; SubIdx, ID: integer): Integer;
var
  idx: Integer;
begin
  Result := -1;
  for idx := 0 to listItem.Count - 1 do
    if (listItem[idx].SubItems[SubIdx] = IntToStr(ID)) then
    begin
      Result := idx;
      Break;
    end;
end;

function TDownloadForm.IEDownloadBeginningTransaction(Sender: TBSCB; szURL,
  szHeaders: PWideChar; dwReserved: Cardinal;
  out szAdditionalHeaders: PWideChar): HRESULT;
begin
   Result:= S_OK;
end;

procedure TDownloadForm.IEDownloadComplete(Sender: TIEDownload;
  aFileNameAndPath, aFileName, aFolderName, aExtension: WideString;
  const ActiveConnections: Integer);
var
  lvItem: TListItem;
  idx: integer;
begin
    idx := FindStringInLV(Listview.Items, IEDownload.FileName);
    lvItem := ListView.Items[idx];
    if (Assigned(lvItem)) then
        lvItem.SubItems[6] := IntToStr(IEDownload.ActiveConnections);

  if cbExecute.Checked then
    Execute(IEDownload.DownloadedFile);
  lvItem := ListView.Selected;
  if (cbRemoveComp.checked) and (lvItem <> nil) then
  begin
    idx := lvItem.Index;
    TProgressBar(lvItem.Data).Free;
    ListView.Items.Delete(idx);
  end;
  if (IEDownload.ActiveConnections = 0) and (not IEDownload.Busy) then
  begin
    btnCancel.Caption := 'Close';
    if (chkAutoClose.Checked) then
      Close;
  end;
end;

procedure TDownloadForm.IEDownloadProgress(Sender: TBSCB; ulProgress,
  ulProgressMax, ulStatusCode, FileSize: Cardinal; szStatusText: PWideChar; Downloaded,
  ElapsedTime, Speed, RemainingTime, Status, Percent: string);
var
  lvItem: TListItem;
  idx: integer;
  pb: TProgressBar;
begin
  if ListView.Items.Count = 0 then
    Exit;
  begin {New downlaod}
    idx := FindThreadIDInLV(Listview.Items, 5, Sender.ThreadID);
    lvItem := ListView.Items[idx];
    if (Assigned(lvItem)) then
    begin
      lvItem.SubItems[0] := Status;
      if ((ulStatusCode = BINDSTATUS_ENDDOWNLOADDATA) or
        (ulStatusCode = BINDSTATUS_DOWNLOADINGDATA)) then
      begin
        with lvItem do
        begin
          SubItems[1] := FormatSize(IEDownload.FileSize);
          SubItems[2] := Percent;
          SubItems[3] := Speed;
          SubItems[4] := RemainingTime;
          SubItems[6] := IntToStr(IEDownload.ActiveConnections);
        end;
        pb := TProgressBar(Listview.Items[idx].Data);
        pb.Max := ulProgressMax;
        pb.Position := ulProgress;
      end;
    end;
  end;
end;

procedure TDownloadForm.IEDownloadStartBinding(var Sender: TBSCB;
  var Cancel: Boolean; pib: IBinding);
var
  DownloadRequest: TDownloadRequest;
  ModRes: TModalResult;
  lvItem: TListItem;
  idx: Integer;
  pbRect: TRect;
  pb: TProgressBar;
begin {If the filename allready exists in our list view}
  idx := FindStringInLV(Listview.Items, IEDownload.FileName);
  if (idx > -1) then
  begin
    lvItem := Listview.Items[idx];
    with lvItem do
    begin
      SubItems[0] := 'Resuming...';
      SubItems.Add(''); // Size
      SubItems.Add(''); // Progress
      SubItems.Add(''); // Speed
      SubItems.Add('UnKnown'); // Remaining Time
      SubItems.Add(IntToStr(Sender.ThreadID));
      SubItems.Add(IntToStr(IEDownload.ActiveConnections));
      SubItems.Add(''); //ProgressBar
    end;
    pb := TProgressBar.Create(nil);
    pb.Parent := Listview;
    lvItem.Data := pb;
    pbRect := lvItem.DisplayRect(drBounds);
    pbRect.Left := 540 + pbRect.Left + ListView.Columns[7].Width;
    pbRect.Right := pbRect.Left+ Listview.Columns[7].Width+50;
    pb.BoundsRect := pbRect;
  end
  else
  begin   {New downlaod}
  DownloadRequest := TDownloadRequest.Create(nil);
  try
    DontOpenThisExts.Add('msi');
    DownloadRequest.SetInfo(IEDownload);
    modres := DownloadRequest.ShowModal;
    case ModRes of
      mrCancel:
      begin
        Cancel := True;
        DownloadRequest.Close;
      end;
      mrOpen:
        begin
          IEDownload.OpenDownloadFolder := True;
          btnCancel.Caption := 'Cancel All';
        end;
    mrSave:
      btnCancel.Caption := 'Cancel All';
    end;


   idx := FindThreadIDInLV(Listview.Items, 5, Sender.ThreadID);
   if (idx > -1) then
     lvItem := ListView.Items[idx]
  else
    lvItem := Listview.Items.Add;
    with lvItem do
    begin
      Caption := IEDownload.FileName;
      SubItems.Add('Waiting'); // Status
      SubItems.Add(''); // Size
      SubItems.Add(''); // Progress
      SubItems.Add(''); // Speed
      SubItems.Add('UnKnown'); // Remaining Time
      SubItems.Add(IntToStr(Sender.ThreadID));
      SubItems.Add(IntToStr(IEDownload.ActiveConnections));
      SubItems.Add(''); //ProgressBar
    end;
    pb := TProgressBar.Create(nil);
    pb.Parent := Listview;
    lvItem.Data := pb;
    pbRect := lvItem.DisplayRect(drBounds);
    pbRect.Left := 540 + pbRect.Left + ListView.Columns[7].Width;
    pbRect.Right := pbRect.Left+ Listview.Columns[7].Width+50;
    pb.BoundsRect := pbRect;

    finally
    DownloadRequest.Free;
  end;
  end;
end;

procedure TDownloadForm.miCancelClick(Sender: TObject);
var
  lvItem: TListItem;
begin
  if (pmDownloadItem.Tag > -1) then
  begin
    lvItem := ListView.Items[miCancel.Tag];
    if (Assigned(lvItem) and Assigned(lvItem.Data)) then
    begin
      IEDownload.Cancel(TBSCB(lvItem.Data));
      lvItem.Data := nil;
    end;
    pmDownloadItem.Tag := -1;
  end;
end;

procedure TDownloadForm.miOpenClick(Sender: TObject);
var
  lvItem: TListItem;
begin
  if (pmDownloadItem.Tag > -1) then
  begin
    lvItem := ListView.Items[pmDownloadItem.Tag];
    if (Assigned(lvItem)) and (lvItem.SubItems[0]= 'Done.') then
        Execute(IEDownload.DownloadFolder+ lvItem.Caption);
  end;
end;

procedure TDownloadForm.ListViewContextPopup(Sender: TObject;
  MousePos: TPoint; var Handled: Boolean);
var
  lvItem: TListItem;
  pt: TPoint;
begin
  // no item is selected but the context menu hotkey was pressed
  if ((MousePos.X = -1) and (MousePos.Y = -1)) then
  begin
    if (ListView.ItemIndex > -1) then
    begin
      lvItem := ListView.Items[ListView.ItemIndex];
      pmDownloadItem.Tag := ListView.ItemIndex;
      miCancel.Enabled := Assigned(lvItem.Data);
      miOpen.Enabled :=  (Assigned(lvItem)) and (lvItem.SubItems[0]= 'Done.');
        CanOpen(TBSCB(lvItem.Data).BscbInfo.infFileExt);
      pt := ListView.ClientToScreen(lvItem.GetPosition());
      pmDownloadItem.Popup(pt.X, pt.Y);
    end;
  end
  else
  begin
    lvItem := ListView.GetItemAt(MousePos.X, MousePos.Y);
    if (Assigned(lvItem)) then
    begin
      pmDownloadItem.Tag := lvItem.Index;
      lvItem := ListView.Items[pmDownloadItem.Tag];
      miCancel.Enabled := Assigned(lvItem.Data) and (lvItem.SubItems[0]<> 'Done.');
      miOpen.Enabled := (Assigned(lvItem)) and (lvItem.SubItems[0]= 'Done.');
      pt := ListView.ClientToScreen(MousePos);
      pmDownloadItem.Popup(pt.X, pt.Y);
    end;
  end;
end;

procedure TDownloadForm.FormCreate(Sender: TObject);
begin
  btnCancel.Caption := 'Cancel All';
end;

procedure TDownloadForm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  if IEDownload.ActiveConnections > 0 then
    IEDownload.CancelAll;
end;

procedure TDownloadForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if IEDownload.ActiveConnections > 0 then
  begin
  if MessageDlg('Threads active. Do you still want to quit?',
      mtWarning, [mbYes, mbNo], 0) = mrNo then
      CanClose:= False
      else
      IEDownload.CancelAll;
  end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品成人免费| 久久先锋影音av鲁色资源网| 欧美精品一卡两卡| 国产酒店精品激情| 蜜臂av日日欢夜夜爽一区| 天天av天天翘天天综合网 | 亚洲bt欧美bt精品| 一区二区成人在线| 天堂在线亚洲视频| 免费在线观看日韩欧美| 秋霞影院一区二区| 国产精品女人毛片| 国产精品青草综合久久久久99| 中文成人av在线| 一区二区三区欧美亚洲| 一区二区高清在线| 亚洲黄色在线视频| 午夜亚洲福利老司机| 久久激五月天综合精品| 国产精品123区| 日韩av电影天堂| 国产一区二区三区在线看麻豆| 国产69精品久久久久毛片| av午夜精品一区二区三区| 欧美羞羞免费网站| 精品毛片乱码1区2区3区| 国产精品另类一区| 国产日韩欧美不卡| 亚洲一区二区三区自拍| 日本成人在线网站| 99精品久久只有精品| 欧美区在线观看| 欧美色图12p| 欧美日韩国产大片| 日韩亚洲电影在线| 亚洲免费在线观看视频| 亚洲一级电影视频| 成人avav在线| 精品久久久久久久久久久久久久久久久 | 亚洲精品一区二区三区香蕉| 国产精品每日更新| 日本中文一区二区三区| 成人国产精品视频| 日韩三区在线观看| 一区二区三区影院| 国产aⅴ综合色| 日韩视频一区二区三区在线播放| 国产精品免费丝袜| 激情六月婷婷综合| 欧美日韩国产不卡| 亚洲精品国产a久久久久久| 久久电影网站中文字幕| 欧美午夜不卡视频| 亚洲久草在线视频| 成人av免费网站| 国产欧美日韩久久| 国产露脸91国语对白| 欧美一级在线观看| 日韩制服丝袜先锋影音| 日本久久电影网| 中文字幕日韩av资源站| 国产乱子伦一区二区三区国色天香| 欧美网站大全在线观看| 亚洲欧美日韩国产一区二区三区| 国模一区二区三区白浆| 日韩欧美国产综合在线一区二区三区| 亚洲大片免费看| 欧美日韩美少妇| 亚洲国产日韩一区二区| 在线观看一区二区视频| 一区二区三区**美女毛片| 91精品办公室少妇高潮对白| 亚洲丝袜美腿综合| 色婷婷精品大在线视频| 亚洲乱码国产乱码精品精可以看 | 欧美一级午夜免费电影| 秋霞国产午夜精品免费视频| 欧美一区二区三区视频免费播放 | 日韩中文字幕不卡| 欧美一二三在线| 极品销魂美女一区二区三区| 欧美mv日韩mv亚洲| 国产精品一二三区在线| 精品va天堂亚洲国产| 蜜桃久久久久久久| 精品88久久久久88久久久| 国产成人在线影院 | 久久国产综合精品| 久久久综合视频| 国产suv一区二区三区88区| 国产精品青草久久| 欧美体内she精高潮| 亚洲国产精品久久人人爱| 欧美日韩高清一区二区不卡| 日韩av在线播放中文字幕| 久久免费视频色| 97久久精品人人做人人爽| 亚洲一区二区视频在线| 精品少妇一区二区三区视频免付费 | 91福利资源站| 午夜婷婷国产麻豆精品| 91精品国产91久久久久久最新毛片| 麻豆成人久久精品二区三区红| 欧美一区二区三区免费大片| 国内精品久久久久影院薰衣草 | 成人ar影院免费观看视频| 亚洲欧美另类在线| 日韩欧美卡一卡二| 91麻豆国产香蕉久久精品| 日韩成人av影视| 中文字幕不卡在线播放| 91精品国产免费久久综合| 国内精品伊人久久久久影院对白| 中文字幕日韩av资源站| 欧美一区日本一区韩国一区| av动漫一区二区| 蓝色福利精品导航| 一区二区三区欧美| 国产日韩欧美精品一区| 欧美浪妇xxxx高跟鞋交| 97久久超碰国产精品电影| 美腿丝袜亚洲色图| 一区二区三区四区视频精品免费 | 久久久不卡网国产精品一区| 成人免费看片app下载| 亚洲精品欧美综合四区| 精品视频一区 二区 三区| 粉嫩一区二区三区在线看| 亚洲一区成人在线| 亚洲欧美日韩国产一区二区三区| 精品伦理精品一区| 日韩一区二区在线看| 欧美丝袜自拍制服另类| 99视频精品免费视频| 国产成人日日夜夜| 国产揄拍国内精品对白| 免费人成精品欧美精品| 亚洲国产精品一区二区www在线| 中文字幕人成不卡一区| 久久综合九色综合97_久久久 | 强制捆绑调教一区二区| 一区二区三区在线播| 亚洲欧美一区二区三区极速播放 | 国产一区啦啦啦在线观看| 秋霞午夜av一区二区三区| 亚洲成人免费影院| 亚洲第一福利一区| 香蕉av福利精品导航| 综合分类小说区另类春色亚洲小说欧美| 久久久噜噜噜久久人人看 | 欧美一区二区私人影院日本| 色综合久久综合网| 91久久久免费一区二区| 欧美午夜电影在线播放| 欧美高清视频www夜色资源网| 在线视频国内一区二区| 麻豆精品在线看| 另类中文字幕网| 狠狠色丁香久久婷婷综| 亚洲色图在线看| 亚洲在线视频免费观看| 亚洲成av人片一区二区梦乃| 日本美女一区二区三区| 激情综合亚洲精品| 国产成人精品影视| 91欧美一区二区| 欧美日本一区二区在线观看| 欧美一区二区三区视频| 久久亚洲影视婷婷| 国产精品网曝门| 亚洲一区国产视频| 日本亚洲电影天堂| 成人综合在线观看| 在线亚洲欧美专区二区| 日韩免费性生活视频播放| 中文字幕成人av| 亚洲国产成人av| 国产在线精品一区二区 | 日产欧产美韩系列久久99| 国内精品国产成人| 在线观看国产一区二区| 精品日韩一区二区| 一区二区免费在线播放| 久88久久88久久久| 色爱区综合激月婷婷| 欧美精品一区二区久久久| 日韩美女啊v在线免费观看| 日本不卡一区二区三区| 丰满白嫩尤物一区二区| 91精品久久久久久久99蜜桃| 中文幕一区二区三区久久蜜桃| 亚洲成人一区二区| www.日韩精品| 日韩免费观看高清完整版 | 国内精品久久久久影院薰衣草| 97久久超碰精品国产| 久久综合九色综合97婷婷女人 | 亚洲综合激情小说| 国产凹凸在线观看一区二区 | 国产乱理伦片在线观看夜一区|