现在的位置: 首页 > 综合 > 正文

直接删除某个文件夹(C++)

2013年08月08日 ⁄ 综合 ⁄ 共 975字 ⁄ 字号 评论关闭

bool DeleteFolder(LPCTSTR szFolderName)
{
 try
 {
  if( (!::PathFileExists(szFolderName))||(FALSE == PathIsDirectory(szFolderName)) )
  {
   return false;
  }

  LPCTSTR szNewFolderName;
  if(szFolderName[lstrlen(szFolderName)-1] == TCHAR('//'))
  {
   szNewFolderName = new const TCHAR[lstrlen(szFolderName)+1];
   memset((LPTSTR)szNewFolderName, TCHAR('/0'), lstrlen(szFolderName)+1); //szNewFolderName 后面需要两个字串结束符
   _tcsncpy((LPTSTR)szNewFolderName, szFolderName, lstrlen(szFolderName)-1);
  }
  else
  {
   szNewFolderName = new const TCHAR[lstrlen(szFolderName)+2];
   memset((LPTSTR)szNewFolderName, TCHAR('/0'), lstrlen(szFolderName)+2); //szNewFolderName 后面需要两个字串结束符
   _tcscpy((LPTSTR)szNewFolderName, szFolderName);
  }

  SHFILEOPSTRUCT fos;
  ZeroMemory(&fos, sizeof(fos));
  fos.hwnd = HWND_DESKTOP;
  fos.wFunc = FO_DELETE;
  fos.fFlags = FOF_SILENT|FOF_NOCONFIRMATION|FOF_NOERRORUI;//|FOF_ALLOWUNDO;
  fos.pFrom = szNewFolderName;
  if(SHFileOperation(&fos) == 0)
  {
   return true;
  }
  return false;
 }
 catch( ... )
 {
  return false;
 }
}

抱歉!评论已关闭.