Form위에 Memo1 : TMemo, GetList_Btn : TButton 과 Delete_Btn : TButton을
올려놓고 아래와 같이 코딩한다.
procedure TForm1.GetList_BtnClick(Sender: TObject);
var
hCacheDir : LongWord (*Handle*);
lpEntryInfo : PInternetCacheEntryInfo;
dwEntrySize,
dwLastError : LongWord;
begin
//Get size of first entry in dwEntrySize
dwEntrySize := 0;
FindFirstUrlCacheEntry( nil, TInternetCacheEntryInfo( nil^ ), dwEntrySize );
//Create structure that can hold entry
GetMem( lpEntryInfo, dwEntrySize );
//Get first cache entry and handle to retrieve next entry, output url
hCacheDir := FindFirstUrlCacheEntry( nil, lpEntryInfo^, dwEntrySize );
if hCacheDir <> 0 then
Memo1.Lines.Add( String( lpEntryInfo^.lpszSourceUrlName ) );
//free structure
FreeMem( lpEntryInfo );
//retrieve all subsequent entries
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
Memo1.Lines.Add( String( lpEntryInfo^.lpszSourceUrlName ) );
FreeMem( lpEntryInfo );
end;
until dwLastError = ERROR_NO_MORE_ITEMS;
end;
procedure TForm1.Delete_BtnClick(Sender: TObject);
var
i : Integer;
begin
for i := 0 to Memo1.Lines.Count - 1 do
DeleteUrlCacheEntry( PChar( Memo1.Lines[ i ] ) );
end;
우와 무쟈게 쉽당... ^^
|