★★★ 有什么办法能真正的清空IE的历史记录?另可开贴再加400分。 ★★★ (200分)

  • 主题发起人 yesky_2008
  • 开始时间
他说的是清除历史记录文件夹中的所有列表,你再看看能吗?
 
to独帅:
我试了很多次,有时偶然也可以,可大部分时间不行。清空后,在C:/Documents and Settings/用户名/Local Settings/History目录中
的历史记录还是有,或按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;
 
to:freeskying_sy
谢谢,但
第一个代码是清除cache,
第二个上面帖已试过不行,
第三个是cache,history和cookies一起清除,我需要清除history,其它不要清除,另外这种方法有时history还是清除不了。
 
HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/TypedURLs

编程 删除想要删除的网址。
 
to 原野飞侠:
我不是要删除IE下拉框的记录,而是要删除C:/Documents and Settings/用户名/Local Settings/History目录中
的历史记录,在win2000下试过上述各位高手的所有方法,都不行。
 
学习一下
 
下载一个金山ie修复器吧.
 
woshuoguole
翻译为-我说过了
 
我的经验是上面的代码可以清空的,如浮生

不过要这样,清空前打开IE,使历史记录面板打开
再清空就OK了

我也没有什么好办法

另外,腾迅的历史记录清空更恶心!
 
to vine:
有些软件可以直接清空IE的历史记录,不需要IE的历史记录面板打开
再清空。不知它们是怎么做到的。是不是可以用com直接调用IE--工具---Internet选项中的“清空历史记录”按钮,不知怎么用Delphi代码实现?
 
关闭所有IE/WebBrowser控件,然后清除即可,当前浏览的无法清除,那时资源管理器流下来的。
 
to Kingron:
不全部关闭IE浏览器就不能清除IE的历史记录吗?有些软件好象可以做到在IE打开时即可清除,不知是怎么做到的?
 
用以下代码清空IE记录,清空后,在C:/Documents and Settings/CurrentUser/Local Settings/History目录中
的历史记录还是有,有什么办法能真正的清空IE的历史记录吗?

只要把Internet选项中 历史记录天数 设置为0
就OK了
 
是可以清除,但是从清除开始之后所有的历史记录都会被保存,就是说当前浏览的页面都会保存起来。

你说的有些软件可以“在IE打开时即可清除”,不知道是那个软件?
 
这个问题好像应该放在automation分类。
你可以把ie看成一个框框,它的所有操作都是通过调用com对象完成的。因此,你可以在delphi程序里完成ie的所有功能,所需要
的就是获得com对象的接口的定义。
看看这里:http://www.euromind.com/iedelphi/urlhistory.htm.
 

Similar threads

I
回复
0
查看
518
import
I
I
回复
0
查看
507
import
I
H
回复
2
查看
133
huang-111222
H
顶部