清理系统盘的垃圾文件,以提高系统整体效率
author : 辟邪马甲
#include <string>
#include <list>
#include <vector>
using namespace std;
static int ix = 0;
public:
WASTECLEAN_NODE node;
int m_nLevel;
WasteCleanList m_WasteList;
CWinThread* m_pThread;
垃圾文件扩展结构:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/1327ab569c1ae82736693a50b8e33378.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
typedef list
<
WASTECLEAN_NODE
>
WasteCleanList;
void CCleanTestDlg::OnTrack()
{
WasteCleanList list1;
list1.erase( list1.begin(), list1.end() );
list1.clear();
GetWasteList( WASTECLEAN_NODE::LEVEL_MIGHTINESS, list1 );
StartWorker( list1, WASTECLEAN_NODE::LEVEL_MIGHTINESS );
}
void CCleanTestDlg::StartWorker( const WasteCleanList & rList,WASTECLEAN_NODE::enCLEANLEVEL level)
{
StartCleanProc( rList, level );
}
void CCleanTestDlg::GetSysDrive() // 系统盘符
{
LPTSTR lpszSystemInfo; // pointer to system information string
DWORD cchBuff = BUFSIZEEX; // size of computer or user name
TCHAR tchBuffer[BUFSIZEEX];
ZeroMemory( tchBuffer, sizeof ( tchBuffer ) );
lpszSystemInfo = tchBuffer;
CString strDir = "" ;
UINT drvType = 0 ;
if ( GetSystemDirectory( lpszSystemInfo, MAX_PATH + 1 ) )
{
strDir.Format( " %s " , lpszSystemInfo );
drvType = GetDriveType( strDir.Left( 3 ) );
if ( drvType == DRIVE_FIXED )
{
g_strPath = strDir.Left( 3 );
}
}
}
void CCleanTestDlg::StartCleanProc( const WasteCleanList & rList,
WASTECLEAN_NODE::enCLEANLEVEL level)
{
g_bRuning = TRUE;
g_wList = rList;
GetSysDrive();
ResetEvent( ghThreadExitEvent );
m_pThread = AfxBeginThread( & ThreadsProc,
(LPVOID)NULL, THREAD_PRIORITY_NORMAL );
}
void DealWasteScan( CString strpath )
{
if ( ! g_bRuning )
return ;
chdir( strpath );
int iItem = g_wList.size();
WasteCleanList::iterator plist;
for ( plist = g_wList.begin(); plist != g_wList.end(); plist ++ )
{
// CString strdd = plist->strFileName.c_str();
DeleteRabbishFile( strpath, plist -> strFileName.c_str() );
}
DeleteZeroFile(strpath);
BOOL flag;
CFileFind m_File;
DWORD dwRes;
flag = m_File.FindFile( NULL );
while (flag && g_bRuning)
{
dwRes = WaitForSingleObject(ghThreadExitEvent, 0 );
if ( dwRes == WAIT_OBJECT_0 )
{
g_bRuning = FALSE;
break ;
}
flag = m_File.FindNextFile();
if ( m_File.IsDirectory() )
{
if ( ! m_File.IsDots() )
{
strpath = m_File.GetFilePath();
DealWasteScan( strpath );
}
}
}
}
void DeleteRabbishFile( CString strFilePath,CString strFileExt )
{
CFileFind findfile;
CString tFileName;
CString strPath;
//
SetCurrentDirectory( strFilePath ) ;
if (findfile.FindFile( strFileExt ) )
{
while ( findfile.FindNextFile() )
{
strPath = findfile.GetFilePath();
tFileName = findfile.GetFileName();
DeleteFile( tFileName );
}
strPath = findfile.GetFilePath();
tFileName = findfile.GetFileName();
DeleteFile( tFileName );
}
}
void DeleteZeroFile(CString path)
{
// chdir(path);
CString Path;
// SetCurrentDirectory(path);
CString ZeroFilename;
CFileFind finder;
BOOL bWorking = finder.FindFile( " *.* " );
while (bWorking){
bWorking = finder.FindNextFile();
if ( ! finder.IsDirectory())
{
if (finder.GetLength() == 0 )
{
Path = finder.GetFilePath();
ZeroFilename = (LPCTSTR)finder.GetFileName();
DeleteFile(ZeroFilename);
}
}
}
}
UINT ThreadsProc(LPVOID pParam)
{
DealWasteScan( g_strPath );
if ( g_bRuning )
{
AfxMessageBox( " 处理完毕 " );
g_wList.erase( g_wList.begin(), g_wList.end() );
g_wList.clear();
g_bRuning = FALSE;
}
return 0 ;
}
BOOL CCleanTestDlg::GetWasteList(WASTECLEAN_NODE::enCLEANLEVEL level,
WasteCleanList & rList)
{
//
//
//
m_WasteList.erase( m_WasteList.begin(), m_WasteList.end() );
m_WasteList = rList;
switch ( level )
{
case WASTECLEAN_NODE::LEVEL_MIGHTINESS:
{
node.iLevel = 0 ;
node.strFileName = _T( " *.tmp " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
m_nLevel = node.iLevel;
node.iLevel = 0 ;
node.strFileName = _T( " *.temp " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.??$ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.?~? " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.___ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.--- " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.$$$ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.@@@ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.^* " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *._dd " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.~* " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " ~*.* " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.syd " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.$db " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.db$ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " file????._dd " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.ftg " );
node.bExt = false ;
node.strType = _T( " 帮助的临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.fts " );
node.bExt = false ;
node.strType = _T( " 帮助的临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.gid " );
node.bExt = false ;
node.strType = _T( " 帮助的临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " mscreate.dir " );
node.bExt = false ;
node.strType = _T( " 安装临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " taiwan???.mtx " );
node.bExt = false ;
node.strType = _T( " TWAIN临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.chk " );
node.bExt = false ;
node.strType = _T( " 丢失簇的恢复文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " chklist.* " );
node.bExt = false ;
node.strType = _T( " 丢失簇的恢复文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.#Res " );
node.bExt = false ;
node.strType = _T( " Mac Photoshop转存到PC的临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.old " );
node.bExt = false ;
node.strType = _T( " 旧的备份文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.wbk " );
node.bExt = false ;
node.strType = _T( " Word备份文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.xlk " );
node.bExt = false ;
node.strType = _T( " Excel备份文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.cdr_ " );
node.bExt = false ;
node.strType = _T( " Corel DRAW备份文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " suhdlog.dat " );
node.bExt = false ;
node.strType = _T( " Windows诊断文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " scandisk.log " );
node.bExt = false ;
node.strType = _T( " 扫描磁盘日志文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " file_id.diz " );
node.bExt = false ;
node.strType = _T( " 软件描述文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " 0???????.nch " );
node.bExt = false ;
node.strType = _T( " 新闻组缓存文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.err " );
node.bExt = false ;
node.strType = _T( " 错误文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " Thumbs.db " );
node.bExt = false ;
node.strType = _T( " 预览图片缓存文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.bak " );
node.bExt = false ;
node.strType = _T( " 临时备份文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.dmp " );
node.bExt = false ;
node.strType = _T( " 内存垃圾文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " system.1st " );
node.bExt = false ;
node.strType = _T( " Windows组车表诊断文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
rList = m_WasteList;
}
return true ;
case WASTECLEAN_NODE::LEVEL_COMMEND:
{
node.iLevel = 1 ;
node.strFileName = _T( " *.tmp " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
m_nLevel = node.iLevel;
node.iLevel = 1 ;
node.strFileName = _T( " *.temp " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.??$ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.?~? " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.___ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.--- " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.$$$ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.@@@ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.^* " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *._dd " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.~* " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " ~*.* " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.syd " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.$db " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.db$ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " file????._dd " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.ftg " );
node.bExt = false ;
node.strType = _T( " 帮助的临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.fts " );
node.bExt = false ;
node.strType = _T( " 帮助的临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.gid " );
node.bExt = false ;
node.strType = _T( " 帮助的临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " mscreate.dir " );
node.bExt = false ;
node.strType = _T( " 安装临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " taiwan???.mtx " );
node.bExt = false ;
node.strType = _T( " TWAIN临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.chk " );
node.bExt = false ;
node.strType = _T( " 丢失簇的恢复文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " chklist.* " );
node.bExt = false ;
node.strType = _T( " 丢失簇的恢复文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.#Res " );
node.bExt = false ;
node.strType = _T( " Mac Photoshop转存到PC的临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.old " );
node.bExt = false ;
node.strType = _T( " 旧的备份文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.wbk " );
node.bExt = false ;
node.strType = _T( " Word备份文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
rList = m_WasteList;
}
return true ;
case WASTECLEAN_NODE::LEVEL_SIMPLE:
{
node.iLevel = 2 ;
node.strFileName = _T( " *.tmp " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
m_nLevel = node.iLevel;
node.iLevel = 2 ;
node.strFileName = _T( " *.temp " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *.??$ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *.?~? " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *.___ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *.--- " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *.$$$ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *.@@@ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *.^* " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *._dd " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *.~* " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " ~*.* " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *.syd " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *.$db " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *.db$ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " file????._dd " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
rList = m_WasteList;
}
return true ;
}
return false ;
}
// end
void CCleanTestDlg::OnTrack()
{
WasteCleanList list1;
list1.erase( list1.begin(), list1.end() );
list1.clear();
GetWasteList( WASTECLEAN_NODE::LEVEL_MIGHTINESS, list1 );
StartWorker( list1, WASTECLEAN_NODE::LEVEL_MIGHTINESS );
}
void CCleanTestDlg::StartWorker( const WasteCleanList & rList,WASTECLEAN_NODE::enCLEANLEVEL level)
{
StartCleanProc( rList, level );
}
void CCleanTestDlg::GetSysDrive() // 系统盘符
{
LPTSTR lpszSystemInfo; // pointer to system information string
DWORD cchBuff = BUFSIZEEX; // size of computer or user name
TCHAR tchBuffer[BUFSIZEEX];
ZeroMemory( tchBuffer, sizeof ( tchBuffer ) );
lpszSystemInfo = tchBuffer;
CString strDir = "" ;
UINT drvType = 0 ;
if ( GetSystemDirectory( lpszSystemInfo, MAX_PATH + 1 ) )
{
strDir.Format( " %s " , lpszSystemInfo );
drvType = GetDriveType( strDir.Left( 3 ) );
if ( drvType == DRIVE_FIXED )
{
g_strPath = strDir.Left( 3 );
}
}
}
void CCleanTestDlg::StartCleanProc( const WasteCleanList & rList,
WASTECLEAN_NODE::enCLEANLEVEL level)
{
g_bRuning = TRUE;
g_wList = rList;
GetSysDrive();
ResetEvent( ghThreadExitEvent );
m_pThread = AfxBeginThread( & ThreadsProc,
(LPVOID)NULL, THREAD_PRIORITY_NORMAL );
}
void DealWasteScan( CString strpath )
{
if ( ! g_bRuning )
return ;
chdir( strpath );
int iItem = g_wList.size();
WasteCleanList::iterator plist;
for ( plist = g_wList.begin(); plist != g_wList.end(); plist ++ )
{
// CString strdd = plist->strFileName.c_str();
DeleteRabbishFile( strpath, plist -> strFileName.c_str() );
}
DeleteZeroFile(strpath);
BOOL flag;
CFileFind m_File;
DWORD dwRes;
flag = m_File.FindFile( NULL );
while (flag && g_bRuning)
{
dwRes = WaitForSingleObject(ghThreadExitEvent, 0 );
if ( dwRes == WAIT_OBJECT_0 )
{
g_bRuning = FALSE;
break ;
}
flag = m_File.FindNextFile();
if ( m_File.IsDirectory() )
{
if ( ! m_File.IsDots() )
{
strpath = m_File.GetFilePath();
DealWasteScan( strpath );
}
}
}
}
void DeleteRabbishFile( CString strFilePath,CString strFileExt )
{
CFileFind findfile;
CString tFileName;
CString strPath;
//
SetCurrentDirectory( strFilePath ) ;
if (findfile.FindFile( strFileExt ) )
{
while ( findfile.FindNextFile() )
{
strPath = findfile.GetFilePath();
tFileName = findfile.GetFileName();
DeleteFile( tFileName );
}
strPath = findfile.GetFilePath();
tFileName = findfile.GetFileName();
DeleteFile( tFileName );
}
}
void DeleteZeroFile(CString path)
{
// chdir(path);
CString Path;
// SetCurrentDirectory(path);
CString ZeroFilename;
CFileFind finder;
BOOL bWorking = finder.FindFile( " *.* " );
while (bWorking){
bWorking = finder.FindNextFile();
if ( ! finder.IsDirectory())
{
if (finder.GetLength() == 0 )
{
Path = finder.GetFilePath();
ZeroFilename = (LPCTSTR)finder.GetFileName();
DeleteFile(ZeroFilename);
}
}
}
}
UINT ThreadsProc(LPVOID pParam)
{
DealWasteScan( g_strPath );
if ( g_bRuning )
{
AfxMessageBox( " 处理完毕 " );
g_wList.erase( g_wList.begin(), g_wList.end() );
g_wList.clear();
g_bRuning = FALSE;
}
return 0 ;
}
BOOL CCleanTestDlg::GetWasteList(WASTECLEAN_NODE::enCLEANLEVEL level,
WasteCleanList & rList)
{
//
//
//
m_WasteList.erase( m_WasteList.begin(), m_WasteList.end() );
m_WasteList = rList;
switch ( level )
{
case WASTECLEAN_NODE::LEVEL_MIGHTINESS:
{
node.iLevel = 0 ;
node.strFileName = _T( " *.tmp " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
m_nLevel = node.iLevel;
node.iLevel = 0 ;
node.strFileName = _T( " *.temp " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.??$ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.?~? " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.___ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.--- " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.$$$ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.@@@ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.^* " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *._dd " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.~* " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " ~*.* " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.syd " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.$db " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.db$ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " file????._dd " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.ftg " );
node.bExt = false ;
node.strType = _T( " 帮助的临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.fts " );
node.bExt = false ;
node.strType = _T( " 帮助的临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.gid " );
node.bExt = false ;
node.strType = _T( " 帮助的临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " mscreate.dir " );
node.bExt = false ;
node.strType = _T( " 安装临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " taiwan???.mtx " );
node.bExt = false ;
node.strType = _T( " TWAIN临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.chk " );
node.bExt = false ;
node.strType = _T( " 丢失簇的恢复文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " chklist.* " );
node.bExt = false ;
node.strType = _T( " 丢失簇的恢复文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.#Res " );
node.bExt = false ;
node.strType = _T( " Mac Photoshop转存到PC的临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.old " );
node.bExt = false ;
node.strType = _T( " 旧的备份文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.wbk " );
node.bExt = false ;
node.strType = _T( " Word备份文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.xlk " );
node.bExt = false ;
node.strType = _T( " Excel备份文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.cdr_ " );
node.bExt = false ;
node.strType = _T( " Corel DRAW备份文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " suhdlog.dat " );
node.bExt = false ;
node.strType = _T( " Windows诊断文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " scandisk.log " );
node.bExt = false ;
node.strType = _T( " 扫描磁盘日志文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " file_id.diz " );
node.bExt = false ;
node.strType = _T( " 软件描述文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " 0???????.nch " );
node.bExt = false ;
node.strType = _T( " 新闻组缓存文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.err " );
node.bExt = false ;
node.strType = _T( " 错误文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " Thumbs.db " );
node.bExt = false ;
node.strType = _T( " 预览图片缓存文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.bak " );
node.bExt = false ;
node.strType = _T( " 临时备份文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " *.dmp " );
node.bExt = false ;
node.strType = _T( " 内存垃圾文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 0 ;
node.strFileName = _T( " system.1st " );
node.bExt = false ;
node.strType = _T( " Windows组车表诊断文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
rList = m_WasteList;
}
return true ;
case WASTECLEAN_NODE::LEVEL_COMMEND:
{
node.iLevel = 1 ;
node.strFileName = _T( " *.tmp " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
m_nLevel = node.iLevel;
node.iLevel = 1 ;
node.strFileName = _T( " *.temp " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.??$ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.?~? " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.___ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.--- " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.$$$ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.@@@ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.^* " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *._dd " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.~* " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " ~*.* " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.syd " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.$db " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.db$ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " file????._dd " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.ftg " );
node.bExt = false ;
node.strType = _T( " 帮助的临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.fts " );
node.bExt = false ;
node.strType = _T( " 帮助的临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.gid " );
node.bExt = false ;
node.strType = _T( " 帮助的临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " mscreate.dir " );
node.bExt = false ;
node.strType = _T( " 安装临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " taiwan???.mtx " );
node.bExt = false ;
node.strType = _T( " TWAIN临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.chk " );
node.bExt = false ;
node.strType = _T( " 丢失簇的恢复文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " chklist.* " );
node.bExt = false ;
node.strType = _T( " 丢失簇的恢复文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.#Res " );
node.bExt = false ;
node.strType = _T( " Mac Photoshop转存到PC的临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.old " );
node.bExt = false ;
node.strType = _T( " 旧的备份文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 1 ;
node.strFileName = _T( " *.wbk " );
node.bExt = false ;
node.strType = _T( " Word备份文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
rList = m_WasteList;
}
return true ;
case WASTECLEAN_NODE::LEVEL_SIMPLE:
{
node.iLevel = 2 ;
node.strFileName = _T( " *.tmp " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
m_nLevel = node.iLevel;
node.iLevel = 2 ;
node.strFileName = _T( " *.temp " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *.??$ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *.?~? " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *.___ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *.--- " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *.$$$ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *.@@@ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *.^* " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *._dd " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *.~* " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " ~*.* " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *.syd " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *.$db " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " *.db$ " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
node.iLevel = 2 ;
node.strFileName = _T( " file????._dd " );
node.bExt = false ;
node.strType = _T( " 临时文件 " );
node.bSelect = true ;
m_WasteList.insert( m_WasteList.end(), node );
rList = m_WasteList;
}
return true ;
}
return false ;
}
// end