delphi怎么读出ie的历史纪录

解决方案 »

  1.   

    这个好像是个原理哦!
    就是像delphi怎么运行代码一样.
    我也不懂
    不好意思哦!
      

  2.   

    unit   Unit1;
      interface  
      uses  
          Windows,   Messages,   SysUtils,   Classes,   Graphics,   Controls,   Forms,   Dialogs,  
          Activex,   Comobj,   StdCtrls;  
      const  
      //   GUID   定义:  
          IID_IEnumStatUrl   :         TGUID='{3C374A42-BAE4-11CF-BF7D-00AA006946EE}';  
          IID_IUrlHistoryStg:       TGUID='{3C374A41-BAE4-11CF-BF7D-00AA006946EE}';  
          IID_IUrlHistoryStg2:     TGUID='{AFA0DC11-C313-11d0-831A-00C04FD5AE38}';  
          IID_IURLHistoryNotify:TGUID='{BC40BEC1-C493-11d0-831B-00C04FD5AE38}';  
       
          CLSID_CUrlHistory:   TGUID   =   '{3C374A40-BAE4-11CF-BF7D-00AA006946EE}';  
       
      type  
      //   TSTATURL   数据结构:  
          PSTATURL=^TSTATURL;  
          STATURL   =   record  
              cbSize:   DWORD;                           //   结构的大小  
              pwcsUrl:   Pointer;                     //   URL   是   PWideChar   ,原贴定义为   DWord  
              pwcsTitle:   Pointer;                 //   History   标题,原贴定义为   DWord  
              ftLastVisited:   FILETIME;  
              ftLastUpdated:   FILETIME;  
              ftExpires:   FILETIME;  
              dwFlags:   DWORD;  
          end;  
          TSTATURL=STATURL;  
       
          IEnumSTATURL   =   interface(IUnknown)  
              ['{3C374A42-BAE4-11CF-BF7D-00AA006946EE}']  
              function   Next(celt:   Integer;   out   elt;   pceltFetched:   PLongint):   HRESULT;   stdcall;  
              function   Skip(celt:   Longint):   HRESULT;   stdcall;
              function   Reset:   HResult;   stdcall;  
              function   Clone(out   ppenum:   IEnumSTATURL):   HResult;   stdcall;  
              function   SetFilter(poszFilter:   PWideChar;   dwFlags:   DWORD):   HResult;   stdcall;  
          end;  
       
          IUrlHistoryStg   =   interface(IUnknown)  
              ['{3C374A41-BAE4-11CF-BF7D-00AA006946EE}']  
              function   AddUrl(pocsUrl:   PWideChar;   pocsTitle:   PWideChar;   dwFlags:   Integer):    
                                                                                                                                    HResult;   stdcall;  
              function   DeleteUrl(pocsUrl:   PWideChar;   dwFlags:   Integer):   HResult;   stdcall;  
              function   QueryUrl(pocsUrl:   PWideChar;   dwFlags:   Integer;   var   lpSTATURL:  
                                                                                                                STATURL):   HResult;   stdcall;  
              function   BindToObject(pocsUrl:   PWideChar;   var   riid:   TIID;   out   ppvOut:  
                                                                                                                Pointer):   HResult;   stdcall;  
              function   EnumUrls(out   ppenum:   IEnumSTATURL):   HResult;   stdcall;  
          end;  
       
          IUrlHistoryStg2   =   interface(IUrlHistoryStg)  
          ['{AFA0DC11-C313-11d0-831A-00C04FD5AE38}']  
              function   AddUrlAndNotify(pocsUrl:   PWideChar;   pocsTitle:   PWideChar;  
                                                                                                                                    dwFlags:   Integer;  
                  fWriteHistory:   Integer;   var   poctNotify:   Pointer;  
                  const   punkISFolder:   IUnknown):   HResult;   stdcall;  
              function   ClearHistory:   HResult;   stdcall;  
          end;  
       
          IUrlHistoryNotify   =   interface(IOleCommandTarget)  
              ['{BC40BEC1-C493-11d0-831B-00C04FD5AE38}']  
          end;  
       
      type  
          TForm1   =   class(TForm)  
              Button1:   TButton;
        ListBox1: TListBox;   //   Caption:='清除历史记录'
              procedure   Button1Click(Sender:   TObject);  
          end;  
       
      var  
          Form1:   TForm1;  
      implementation  
      {$R   *.DFM}  
      procedure   TForm1.Button1Click(Sender:   TObject);   //   清除历史记录  
      var  
        UrlHistory:   IUrlHistoryStg2;  
        Enum:IEnumSTATURL;  
        urlSTATURL:TSTATURL;  
        fetched:Longint;  
        P:PWideChar;  
      begin  
      //   初始化   STATURL   数据结构
        ZeroMemory(@urlSTATURL,SizeOf(TSTATURL));  
       
      //   创建   IUrlHistoryStg2   实例  
        if   CoCreateInstance(CLSID_CUrlHistory,nil,  
                          CLSCTX_INPROC_SERVER,  
                          IID_IUrlHistoryStg2,  
                          UrlHistory)=1   then  
          begin  
            MessageBox(0,'IUrlHistoryStg2   没有创建','',MB_OK);  
            exit;  
          end;  
       
      //   获得枚举接口   ->   IEnumSTATURL  
            if   UrlHistory.EnumUrls(Enum)=1   then  
                  MessageBox(0,'IEnumSTATURL   接口没有找到','',MB_OK);  
       
      //   找到一个,删除一个  
            while   Enum.Next(1,urlSTATURL,@fetched)<>1   do  
              begin  
                P:=urlSTATURL.pwcsUrl;
                listbox1.Items.Add(p);
                {
                if   UrlHistory.DeleteUrl(P,0)=1   then
                    begin
                      MessageBox(0,'删除出错','',MB_OK);
                      Break;
                    end;
                    }
              end;    
      end;  
      end.