使用twebbrowser控件访问一个网页,会在ie的历史记录里保存曾经访问的网页地址!!!请问怎么去掉自动保存历史问题!比如在程序中
webbrowser1.Navigate('http://www.abc.com')打开ie的历史记录今天中,就会发现
http://www.abc.com请问高手们,这个问题怎么解决??我不想让别人知道ie历史记录里面的http://www.abc.com
不要告诉我在navigate参数里加flag isnohistory
那个参数加了还回产生历史记录!!!急!!!

解决方案 »

  1.   

    靠。我是在写程序,大哥,写的程序是让别人使用的,该不能让每个使用者都先把ie历史记录设置不保存吧。况且,我只让ie不保存我的程序里面的webbrowser的历史记录,别的网站的历史记录我不管的。
      

  2.   

    WEBBROWSER的核心就是IE,当然就会有了,只要用清除IE的方法就可以了
    清除Internet Explorer临时文件 在TfrmMain你必须引用WinINet单元 Uses WinINet; 然后放上一个TButton按钮命名为btnEmptyCache,加入以下代码:
     Procedure TfrmMain.btnEmptyCacheClick( Sender : TObject );  Var  lpEntryInfo : PInternetCacheEntryInfo;  hCacheDir : LongWord;  dwEntrySize : LongWord;  dwLastError : LongWord;  Begin  dwEntrySize := 0;  FindFirstUrlCacheEntry(NIL,TInternetCacheEntryInfoNIL^ ),dwEntrySize ); GetMem( lpEntryInfo, dwEntrySize ); hCacheDir := FindFirstUrlCacheEntry( NIL, lpEntryInfo^, dwEntrySize ); If ( hCacheDir <> 0 ) Then DeleteUrlCacheEntry( lpEntryInfo^.lpszSourceUrlName ); FreeMem( lpEntryInfo ); Repeat dwEntrySize := 0; FindNextUrlCacheEntry( hCacheDir, TInternetCacheEntryInfo( NIL^ ), dwEntrySize ); dwLastError := GetLastError(); If ( GetLastError = ERROR_INSUFFICIENT_BUFFER ) Then Begin GetMem( lpEntryInfo, dwEntrySize ); If ( FindNextUrlCacheEntry( hCacheDir, lpEntryInfo^, dwEntrySize ) ) Then DeleteUrlCacheEntry( lpEntryInfo^.lpszSourceUrlName ); FreeMem(lpEntryInfo); End; Until ( dwLastError = ERROR_NO_MORE_ITEMS );
     End;*********************type TSTATURL = record  cbSize: DWORD;  pwcsUrl: DWORD;  pwcsTitle: DWORD;  ftLastVisited: FILETIME;  ftLastUpdated: FILETIME;  ftExpires: FILETIME;  dwFlags: DWORD; end;
    type 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;
    type 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: TSTATURL): HResult; stdcall;  function BindToObject(pocsUrl: PWideChar; var riid: TGUID; out ppvOut: Pointer): HResult; stdcall;  function EnumUrls(out ppenum: IEnumSTATURL): HResult; stdcall; end;
    type 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;
    function ClearIEHistory:integer;const  CLSID_CUrlHistory: TGUID = '{3C374A40-BAE4-11CF-BF7D-00AA006946EE}';var IEHistory:IUrlHistoryStg2;begin IEHistory:=CreateComObject(CLSID_CUrlHistory) as IUrlHistoryStg2; IEHistory.ClearHistory;end;
    procedure TForm1.Button1Click(Sender: TObject);begin ClearIEHistory;end;**********************uses wininet;
    procedure TForm1.Button1Click(Sender: TObject);var cache_info:PInternetCacheEntryInfo; cbSizeOf_Cache_info:dword; hw:hwnd; buf:tstrings;begin// buf:=tstringlist.Create; new(cache_info); hw:=FindFirstUrlCacheEntryEx(nil,0,NORMAL_CACHE_ENTRY or URLHISTORY_CACHE_ENTRY,0,cache_info,@cbSizeOf_Cache_info,nil,nil,nil); if hw<>0 then begin  DeleteUrlCacheEntry(cache_info.lpszSourceUrlName);//  buf.Add(cache_info.lpszSourceUrlName);  while FindNextUrlCacheEntryEx(hw,cache_info,@cbSizeOf_Cache_info,nil,nil,nil) do//   buf.Add(cache_info.lpszSourceUrlName);   DeleteUrlCacheEntry(cache_info.lpszSourceUrlName); end; FindCloseUrlCache(hw); dispose(cache_info);// showmessage(buf.Text);// buf.Free;end; 
      

  3.   

    FindFirstUrlCacheEntry(NIL,TInternetCacheEntryInfoNIL^),dwEntrySize );这一句通不过
      

  4.   

    我 uses wininet也不行。另外我注意到delphi6里面有个系统unit 就叫wininet。
    不知道上面代码里面的
    uses wininet;
    procedure TForm1.Button1Click(Sender: TObject);var cache_info:PInternetCacheEntryInfo; cbSizeOf_Cache_info:dword; hw:hwnd; buf:tstrings;begin// buf:=tstringlist.Create; new(cache_info); hw:=FindFirstUrlCacheEntryEx(nil,0,NORMAL_CACHE_ENTRY or URLHISTORY_CACHE_ENTRY,0,cache_info,@cbSizeOf_Cache_info,nil,nil,nil); if hw<>0 then begin  DeleteUrlCacheEntry(cache_info.lpszSourceUrlName);//  buf.Add(cache_info.lpszSourceUrlName);  while FindNextUrlCacheEntryEx(hw,cache_info,@cbSizeOf_Cache_info,nil,nil,nil) do//   buf.Add(cache_info.lpszSourceUrlName);   DeleteUrlCacheEntry(cache_info.lpszSourceUrlName); end; FindCloseUrlCache(hw); dispose(cache_info);// showmessage(buf.Text);// buf.Free;end; 
     是不是要改个名字。