본문 바로가기

프로그래밍/Delphi

[Delphi] IE캐시를 모두 지우기

다음과 같이 WinInet 유닛에 포함된 웹 관련 함수를 이용하여
IE에 캐싱된 데이터를 삭제할 수 있다.


uses 
  WinInet; 


procedure DeleteIECache; 
var 
  lpEntryInfo: PInternetCacheEntryInfo; 
  hCacheDir: LongWord; 
  dwEntrySize: LongWord; 
begin 
  dwEntrySize := 0; 
  FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize); 
  GetMem(lpEntryInfo, dwEntrySize); 
  if dwEntrySize > 0 then lpEntryInfo^.dwStructSize := dwEntrySize; 
  hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize); 
  if hCacheDir <> 0 then  
  begin 
    repeat 
      DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName); 
      FreeMem(lpEntryInfo, dwEntrySize); 
      dwEntrySize := 0; 
      FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^), dwEntrySize); 
      GetMem(lpEntryInfo, dwEntrySize); 
      if dwEntrySize > 0 then lpEntryInfo^.dwStructSize := dwEntrySize; 
    until not FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize); 
  end; 
  FreeMem(lpEntryInfo, dwEntrySize); 
  FindCloseUrlCache(hCacheDir); 
end; 


procedure TForm1.Button1Click(Sender: TObject); 
begin 
  DeleteIECache; 
end;