// 获取Internet缓存文件
function GetCacheFilePath(): TStringList;
var
pEntryInfo: PInternetCacheEntryInfo;
lCacheDir, lEntrySize, lLastError: Cardinal;
bLoop: Boolean;
begin
Result := nil;
// 获取缓冲区大小
lEntrySize := 0;
lCacheDir := FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^),
lEntrySize);
if lEntrySize = 0 then
Exit;
// 分配内存
GetMem(pEntryInfo, lEntrySize);
// 获取缓存文件
lCacheDir := FindFirstUrlCacheEntry(nil, pEntryInfo^, lEntrySize);
if lCacheDir = 0 then
begin
FreeMem(pEntryInfo, lEntrySize);
Exit;
end;
Result := TStringList.Create;
// 开始遍历
while True do
begin
try
Result.Add(string(StrPas(pEntryInfo^.lpszLocalFileName)));
except
end;
// 释放内存
FreeMem(pEntryInfo, lEntrySize);
// 获取下一个缓冲区大小
lEntrySize := 0;
FindNextUrlCacheEntry(lCacheDir, TInternetCacheEntryInfo(nil^), lEntrySize);
// 分配内存
if GetLastError() = ERROR_INSUFFICIENT_BUFFER then
GetMem(pEntryInfo, lEntrySize)
else
Break;
// 下一个缓存文件
FindNextUrlCacheEntry(lCacheDir, pEntryInfo^, lEntrySize);
end;
// 关闭缓存
FindCloseUrlCache(lCacheDir);
end;