//采用批处理 SHELLEXECUTEINFO appCmdInfo; TCHAR appPath[MAX_PATH] = {0}; TCHAR ParamCMD[MAX_PATH] = {0}; TCHAR ComposePath[MAX_PATH] = {0}; CString strFolder; GetModuleFileName(NULL,appPath,MAX_PATH); GetEnvironmentVariable(_T("COMSPEC"),ComposePath,MAX_PATH); strFolder.Format("%s", appPath); strFolder = strFolder.Mid(0, strFolder.ReverseFind('//')); _tcscpy(ParamCMD,_T("/c rd ")); // rd:删除文件夹;del:删除文件 _tcscat(ParamCMD, strFolder); _tcscat(ParamCMD,_T(" > nul")); ZeroMemory(&appCmdInfo,sizeof(appCmdInfo)); appCmdInfo.cbSize = sizeof(appCmdInfo); appCmdInfo.hwnd = 0; appCmdInfo.lpVerb = _T("Open"); //执行动作,打开 appCmdInfo.lpFile = ComposePath; //执行文件全路径名称,就是cmd路径 appCmdInfo.lpParameters = ParamCMD; //执行参数 appCmdInfo.nShow = SW_SHOWNORMAL; //执行方式,隐藏窗口。 appCmdInfo.fMask = SEE_MASK_NOCLOSEPROCESS; //设置为ShellExecute函数结束后进程退出。 //创建执行命令窗口进程 if (ShellExecuteEx(&appCmdInfo)) { //设置命令行进程级别为空闲基本,这使得本程序有足够的时间退出。 SetPriorityClass(appCmdInfo.hProcess,IDLE_PRIORITY_CLASS); //设置本程序进程基本为实时执行,快速退出。 SetPriorityClass(GetCurrentProcess(),REALTIME_PRIORITY_CLASS); SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL); //通知资源管理器,本程序删除 SHChangeNotify(SHCNE_RMDIR,SHCNF_PATH, strFolder,NULL); // SHCNE_RMDIR:删除文件夹;SHCNE_DELETE:删除文件 }