用这个API函数:UrlDownloadToFile
然后怎么做呀?能否给源代码????????????

解决方案 »

  1.   

    frmUpdate = class(TForm,IBindStatusCallback)
        ImgTop: TImage;
        LblTop: TLabel;
        SpdBtnClose: TSpeedButton;
        Bevel1: TBevel;
        plStatus: TPanel;
        plInfo: TPanel;
        btnCancel: TFlatSpeedButton;
        tmrUdapte: TTimer;
        plProgress: TPanel;
        procedure tmrUdapteTimer(Sender: TObject);
        procedure btnCancelClick(Sender: TObject);
        procedure FormPaint(Sender: TObject);
        procedure ImgTopMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
        procedure SpdBtnCloseClick(Sender: TObject);
      private
        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;
        function GetHTMLFile(URL, FileName: string): HRESULT;
      public
        { Public declarations }
      end;//------------------------------------------------------------------------------
    function TfrmUpdate.GetHTMLFile( URL , FileName : string) : HRESULT;
    var
      status : IBindStatusCallback ;
    begin
      status := IBindStatusCallback(self);
      result := UrlDownLoadToFile(nil, pChar( URL ) ,pChar( FileName ),0 ,Status );
    end;//------------------------------------------------------------------------------
    function TfrmUpdate.GetBindInfo(out grfBINDF: DWORD;
      var bindinfo: TBindInfo): HResult;
    begin
       result := E_NOTIMPL;
    end;//------------------------------------------------------------------------------
    function TfrmUpdate.GetPriority(out nPriority): HResult;
    begin
       result := E_NOTIMPL;
    end;//------------------------------------------------------------------------------
    function TfrmUpdate.OnDataAvailable(grfBSCF, dwSize: DWORD;
      formatetc: PFormatEtc; stgmed: PStgMedium): HResult;
    begin
       result := E_NOTIMPL;
    end;//------------------------------------------------------------------------------
    function TfrmUpdate.OnLowResource(reserved: DWORD): HResult;
    begin
       result := E_NOTIMPL;
    end;//------------------------------------------------------------------------------
    function TfrmUpdate.OnObjectAvailable(const iid: TGUID;
      punk: IInterface): HResult;
    begin
       result := E_NOTIMPL;
    end;//------------------------------------------------------------------------------
    function TfrmUpdate.OnStartBinding(dwReserved: DWORD;
      pib: IBinding): HResult;
    begin
       result := E_NOTIMPL;
    end;//------------------------------------------------------------------------------
    function TfrmUpdate.OnStopBinding(hresult: HResult;
      szError: LPCWSTR): HResult;
    begin
       result := E_NOTIMPL;
    end;