18,356
社区成员
发帖
与我相关
我的任务
分享
HANDLE hCacheEnumHandle = NULL;
LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry = NULL;
DWORD dwTrySize = 0; //initial buffer size
DWORD dwEntrySize= 8192; //initial buffer size
// Delete index.dat if requested.
// Be sure that index.dat is not locked.
// Enable initial buffer size for cache entry structure.
lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
lpCacheEntry->dwStructSize = dwEntrySize;
dwTrySize = dwEntrySize;
// URL search pattern (1st parameter)
// options are: NULL ("*.*"), "cookie:"
// or "visited:".
hCacheEnumHandle = FindFirstUrlCacheEntry(NULL /* in */ ,
lpCacheEntry /* out */,
&dwTrySize /* in, out */);
// First, obtain handle to internet cache
// with FindFirstUrlCacheEntry
// for later use with FindNextUrlCacheEntry.
if (hCacheEnumHandle == NULL)
{
CString str;
str.Format("error=%d\n",GetLastError());
MessageBox(str,"1111111",MB_OKCANCEL);
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{
delete [] lpCacheEntry;
dwEntrySize = dwTrySize;
lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
lpCacheEntry->dwStructSize = dwEntrySize;
hCacheEnumHandle = FindFirstUrlCacheEntry(NULL, lpCacheEntry , &dwTrySize);
}
else
{
goto ENDOF;
}
}
if (hCacheEnumHandle)
{
TRACE("%s\n",lpCacheEntry->lpszSourceUrlName);
// if (strcmp(lpCacheEntry->lpszSourceUrlName,pszSrc) == 0)
// {
// CopyFile(lpCacheEntry->lpszLocalFileName,pszDst,FALSE);
// goto ENDOF;
// }
}
// Next, use hCacheEnumHandle obtained
// from the previous step to delete
// subsequent items of cache.
while(TRUE)
{
// Notice that return values of FindNextUrlCacheEntry (BOOL) and
// FindFirstUrlCacheEntry (HANDLE) are different.
dwTrySize = dwEntrySize;
BOOL bReturn = FindNextUrlCacheEntry(hCacheEnumHandle, lpCacheEntry, &dwTrySize);
if (!bReturn)
{
CString str;
str.Format("error=%d\n",GetLastError());
MessageBox(str,"1111111",MB_OKCANCEL);
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{
delete [] lpCacheEntry;
dwEntrySize = dwTrySize;
lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
lpCacheEntry->dwStructSize = dwEntrySize;
bReturn = FindNextUrlCacheEntry(hCacheEnumHandle, lpCacheEntry, &dwTrySize);
}
else
{
break;
}
}
if (bReturn)
{
TRACE("%s\n",lpCacheEntry->lpszSourceUrlName);
// if (strcmp(lpCacheEntry->lpszSourceUrlName,pszSrc) == 0)
// {
// CopyFile(lpCacheEntry->lpszLocalFileName,pszDst,FALSE);
// break;
// }
}
} ;
ENDOF:
if (lpCacheEntry) delete [] lpCacheEntry;
if (hCacheEnumHandle) FindCloseUrlCache(hCacheEnumHandle);