程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 遞歸法實現一鍵清空

遞歸法實現一鍵清空

編輯:關於VC++

本人剛學VC不久,近來做了一個一鍵清空的小軟件,主要是為了保護個人隱私,該軟件清除的內容包括:我最近的文檔,IE訪問記錄,上網歷史記錄,地址欄URL記錄,清除REALPLAY播放列表,清除REALONE播放列表。該軟件支持9X/2000/XP/2003,在同學的電腦上實驗過,效果不錯。 運行畫面如圖一:

圖一 一鍵清空運行畫面

1、核心代碼

該軟件的核心代碼是ClearDir函數:

void CClearAllDlg::ClearDir(CString str)
  {
  CFileFind ff;
  CString szDir=str;
  if (szDir.Right(1)!="\\") szDir+="\\";
  szDir+="*.*";
  BOOL bfile=ff.FindFile(szDir);
  while (bfile)
  {
   bfile=ff.FindNextFile();
   if (ff.IsDirectory() && !ff.IsDots())  ClearDir(ff.GetFilePath());
   else if (!ff.IsDots() && !ff.IsDirectory()) DeleteFile(ff.GetFilePath());
  }
  ff.Close();
  }

該函數用遞歸法清除了一個目錄下的所有文件和子目錄。只需傳遞給它需要清除的文件夾的路徑即可。

2、判斷操作系統

先獲取操作系統的信息,然後判斷版本號,代碼如下:

OSVERSIONINFO os;
os.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&os);
//如果是WIN 2000以上
if (os.dwPlatformId==VER_PLATFORM_WIN32_NT)
{
   …………
}
//如果是WIN 9X
if (os.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)
{
   …………
}

3、構造清除的路徑

由於9X和NT系統存放"最近文檔","歷史記錄"的文件夾不相同,所以必須分別考慮。在9X下,最近文檔和歷史記錄的目錄分別為"盤符:\\WINDOWS\\Recent\\""盤符:\\WINDOWS\\History\\",所以只需清除這兩個固定目錄即可。在NT下,由於支持多用戶,這些路徑中間需要加上"用戶名"或者"計算機名.用戶名"的字符串。所以構造起來稍微麻煩一點,具體請參考源代碼。

4、清除注冊表記錄

我用了一個類CRegistry,來清除一些注冊表中的記錄,請參考源代碼。

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved