Mega Code Archive

 
Categories / Delphi / Files
 

How to get the name of the local file that is being cached

Title: How to get the name of the local file that is being cached uses WiniNet; // Get Cached File Path From URL function GetCachedFileFromURL(strUL: string; var strLocalFile: string): boolean; var lpEntryInfo: PInternetCacheEntryInfo; hCacheDir: LongWord; dwEntrySize: LongWord; dwLastError: LongWord; begin Result := False; dwEntrySize := 0; // Begin the enumeration of the Internet cache. FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize); GetMem(lpEntryInfo, dwEntrySize); hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize); if (hCacheDir 0) and (strUL = lpEntryInfo^.lpszSourceUrlName) then begin strLocalFile := lpEntryInfo^.lpszLocalFileName; Result := True; end; FreeMem(lpEntryInfo); if Result = False then repeat dwEntrySize := 0; // Retrieves the next cache group in a cache group enumeration FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^), dwEntrySize); dwLastError := GetLastError(); if (GetLastError = ERROR_INSUFFICIENT_BUFFER) then begin GetMem(lpEntryInfo, dwEntrySize); if (FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize)) then begin if strUL = lpEntryInfo^.lpszSourceUrlName then begin strLocalFile := lpEntryInfo^.lpszLocalFileName; Result := True; Break; end; end; FreeMem(lpEntryInfo); end; until (dwLastError = ERROR_NO_MORE_ITEMS); end;