본문 바로가기
IT-개발,DB

[개발/MFC] 인터넷 임시파일 삭제하기

by SB리치퍼슨 2011. 12. 2.
Header: Declared in Wininet.h.
Library: Use Wininet.lib.
 
 
    BOOL bResult = FALSE;
    BOOL bDone = FALSE;
    LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry = NULL;  
 
    DWORD  dwTrySize, dwEntrySize = 4096; // start buffer size    
    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; // use new size returned
                 }
                 break;
 
             // we are done
            case ERROR_NO_MORE_ITEMS:
                 bDone = TRUE;
                 bResult = TRUE;                
                 break;
 
             // we have got an entry
            case ERROR_SUCCESS:                       
  
                 // don't delete cookie entry
            //   if (!(lpCacheEntry->CacheEntryType & COOKIE_CACHE_ENTRY))                
             {
                     DeleteUrlCacheEntry(lpCacheEntry->lpszSourceUrlName);
                     AddEventToList(WBListBox, lpCacheEntry->lpszSourceUrlName);
                 }
                
              
                 // get ready for next entry
                 dwTrySize = dwEntrySize;
                 if (FindNextUrlCacheEntry(hCacheDir, lpCacheEntry, &dwTrySize))
                      dwError = ERROR_SUCCESS;          
 
                 else
                 {
                      dwError = GetLastError();
                      dwEntrySize = dwTrySize; // use new size returned
                 }                    
                 break;
 
            // unknown error
            default:
                 bDone = TRUE;                
                 break;
      }
 
      if (bDone)
      {   
            delete [] lpCacheEntry;
            if (hCacheDir)
                 FindCloseUrlCache(hCacheDir);         
                            
      }
    } while (!bDone);

반응형

댓글