unit uDelCache;
interface uses Registry,ShellApi, WinInet,ShlObj,ComObj, Forms, Windows, SysUtils;
procedure DelHistory;//刪除歷史記錄(ie緩沖文件夾下所有文件) procedure DelRegCache; //清理注冊表 procedure DelHistory;//刪除歷史記錄(ie緩沖文件夾下所有文件) function ClearIEHistory:integer;//補充刪除網(wǎng)頁歷史
// procedure TForm1.Button1Click(Sender: TObject); //begin // try // DelRegCache;//清理注冊表 // DelCookie; //刪除cookies(ie緩沖文件夾下面cookies文件) // DelHistory; //刪除歷史記錄(ie緩沖文件夾下所有文件) // //C:\Documents and Settings\用戶名\Local Settings\Temporary Internet Files // ClearIEHistory; //補充刪除網(wǎng)頁歷史 // except // abort; // end; //end;
implementation procedure DelRegCache; var reg:TRegistry; begin reg:=Tregistry.create; reg.RootKey:=HKEY_CURRENT_USER; reg.DeleteKey('Software\Microsoft\Internet Explorer\TypedURLs'); reg.Free; end; function GetCookiesFolder:string; var pidl:pItemIDList; buffer:array [ 0..255 ] of char ; begin SHGetSpecialFolderLocation( application.Handle , CSIDL_COOKIES, pidl); SHGetPathFromIDList(pidl, buffer); result:=strpas(buffer); end; function ShellDeleteFile(sFileName: string): Boolean; var FOS: TSHFileOpStruct; begin FillChar(FOS, SizeOf(FOS), 0); {記錄清零} with FOS do begin wFunc := FO_DELETE;//刪除 pFrom := PChar(sFileName); fFlags := FOF_NOCONFIRMATION; end; Result := (SHFileOperation(FOS) = 0); end;
//刪除cookies procedure DelCookie; var dir:string; begin try InternetSetOption(nil, INTERNET_OPTION_END_BROWSER_SESSION, nil, 0); dir:=GetCookiesFolder; ShellDeleteFile(dir+'\*.txt'+#0); //網(wǎng)上很多代碼這里沒有加最后的#0,在xp下經(jīng)測試會報錯 except abort; end; end;
//刪除歷史記錄 procedure DelHistory; var lpEntryInfo: PInternetCacheEntryInfo; hCacheDir: LongWord ; dwEntrySize, dwLastError: LongWord; begin try dwEntrySize := 0; FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), 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 dwLastError = ERROR_INSUFFICIENT_BUFFER then //如果成功 begin GetMem(lpEntryInfo, dwEntrySize); {分配dwEntrySize字節(jié)的內(nèi)存} if FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize) then DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName); FreeMem(lpEntryInfo); end; until (dwLastError = ERROR_NO_MORE_ITEMS); except abort; end; end;
//補充函數(shù)
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;
end.
|