Удаляем Temporary Internet Files
|
В IE5, Вы можете удалить Temporary Internet Files в "Internet Options" на закладке "Свойства". А Вам никогда не хотелось, чтобы удалением Temporary Internet Files занималось Ваше приложение? Данный пример показывает - как это можно сделать с помощью WinInet API-функций: FindFirstUrlCacheEntry, FindNextUrlCacheEntry, DeleteUrlCacheEntry, и FindCloseUrlCache. Они не документированы, но я попробовал, и они работают в VC++ 6.0 на Win98/NT. #include <wininet.h> // // Удаление всех файлов в папке Temporary Internet Files // // Внимание, данный пример не удаляет Кукисы // [смотри if (!(lpCacheEntry->CacheEntryType & COOKIE_CACHE_ENTRY))] // BOOL DelTempFiles() { BOOL bResult = FALSE; BOOL bDone = FALSE; LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry = NULL; DWORD dwTrySize, dwEntrySize = 4096; // размер буфера HANDLE hCacheDir = NULL; DWORD dwError = ERROR_INSUFFICIENT_BUFFER; do { switch (dwError) { // need a bigger buffer case ERROR_INSUFFICIENT_BUFFER: delete [] lpCacheEntry; lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize]; lpCacheEntry->dwStructSize = dwEntrySize; dwTrySize = dwEntrySize; BOOL bSuccess; if (hCacheDir == NULL) bSuccess = (hCacheDir = FindFirstUrlCacheEntry(NULL, lpCacheEntry, &dwTrySize)) != NULL; else bSuccess = FindNextUrlCacheEntry(hCacheDir, lpCacheEntry, &dwTrySize);
if (bSuccess) dwError = ERROR_SUCCESS; else { dwError = GetLastError(); dwEntrySize = dwTrySize; // возвращаем новый размер буфера } break;
// уже всё удалено case ERROR_NO_MORE_ITEMS: bDone = TRUE; bResult = TRUE; break;
// если нет ошибок case ERROR_SUCCESS: // кукисы не удалять if (!(lpCacheEntry->CacheEntryType & COOKIE_CACHE_ENTRY)) DeleteUrlCacheEntry(lpCacheEntry->lpszSourceUrlName); // Удаляем следующий элемент dwTrySize = dwEntrySize; if (FindNextUrlCacheEntry(hCacheDir, lpCacheEntry, &dwTrySize)) dwError = ERROR_SUCCESS; else { dwError = GetLastError(); dwEntrySize = dwTrySize; // возвращаем новый размер буфера } break;
// по умолчанию default: bDone = TRUE; break; }
if (bDone) { delete [] lpCacheEntry; if (hCacheDir) FindCloseUrlCache(hCacheDir); } } while (!bDone); return bResult; }
|