说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

使用twebbrowser控件访问一个网页,会在ie的历史记录里保存曾经访问的网页地址!!!请问怎么去掉自动保存历史问题!

编辑:说三道四文库 发布时间:2018-07-20 10:52
HTML文档下载 WORD文档下载 PDF文档下载
使用twebbrowser控件访问一个网页,会在ie的历史记录里保存曾经访问的网页地址!!!请问怎么去掉自动保存历史问题!

比如在程序中
webbrowser1.Navigate('http://www.abc.com')

打开ie的历史记录今天中,就会发现
http://www.abc.com

请问高手们,这个问题怎么解决??我不想让别人知道ie历史记录里面的http://www.abc.com


不要告诉我在navigate参数里加flag isnohistory
那个参数加了还回产生历史记录!!!

急!!!
ie中设置
靠。我是在写程序,大哥,写的程序是让别人使用的,该不能让每个使用者都先把ie历史记录设置不保存吧。

况且,我只让ie不保存我的程序里面的webbrowser的历史记录,别的网站的历史记录我不管的。
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; 
FindFirstUrlCacheEntry(NIL,TInternetCacheEntryInfoNIL^),dwEntrySize );

这一句通不过
Uses WinInet;
我 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; 
 是不是要改个名字。

备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘