C/C++删除文件夹下所有文件及获取已加载模块的文件的路径

extern "C" bool DeleteDirectory(char* sDirName)
{
 CFileFind tempFind;
 char sTempFileFind[MAX_PATH];

 sprintf(sTempFileFind, "%s\\*.*", sDirName);
 BOOL IsFinded = tempFind.FindFile(sTempFileFind);
 while (IsFinded)
 {
  IsFinded = tempFind.FindNextFile();

  if (!tempFind.IsDots())
  {
   char sFoundFileName[MAX_PATH];
   strcpy(sFoundFileName, tempFind.GetFileName().GetBuffer(MAX_PATH));

   if (tempFind.IsDirectory())
   {
    char sTempDir[MAX_PATH];
    sprintf(sTempDir, "%s\\%s", sDirName, sFoundFileName);
    DeleteDirectory(sTempDir); // 嵌套函数
   }
   else
   {
    char sTempFileName[MAX_PATH];
    sprintf(sTempFileName, "%s\\%s", sDirName, sFoundFileName);
    DeleteFile(sTempFileName); // DeleteFile(sTempFileName)貌似也行的
   }
  }
 }
 tempFind.Close();
 if (!RemoveDirectory(sDirName))
 {
  return FALSE;
 }
 return TRUE;
}

 

获取当前进程已加载模块的文件的完整路径,该模块必须由当前进程加载。

DWORD WINAPI GetModuleFileName( _In_opt_  HMODULE hModule, _Out_     LPTSTR lpFilename,_In_      DWORD nSize);

HMODULE GetSelfModuleHandle()
{
    MEMORY_BASIC_INFORMATION mbi;
    return ((::VirtualQuery(GetSelfModuleHandle, &mbi, sizeof(mbi)) != 0) ? (HMODULE)mbi.AllocationBase : NULL);
}

GetModuleFileName(GetSelfModuleHandle(), curDir, 100);   //curDir为获取的路径

你可能感兴趣的:(C/C++删除文件夹下所有文件及获取已加载模块的文件的路径)