Как проверить, скрыта ли папка или файл = - PullRequest
0 голосов
/ 23 июня 2010

Я хочу выяснить, является ли файл или каталог скрытым.

Сначала я использовал CFile :: GetStatus (), однако я обнаружил, что этот API иногда возвращает FALSE.1004 * Я не знаю почему, поэтому я написал следующий код, однако я обнаружил, что он нестабилен.Что не так с моим кодом?

  BOOL IsHide(const CString& strPath, BOOL& bIsHide)
  {
   if (strPath.GetLength() <= 3)
   {
    bIsHide = FALSE;
    return  TRUE;
   }
   bIsHide = FALSE;
   HANDLE hFile = CreateFile( strPath, 0, FILE_SHARE_READ,
    NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS,
    NULL);
   if (hFile == INVALID_HANDLE_VALUE)
   {
    ASSERT(FALSE);
    return FALSE;
   }
   BY_HANDLE_FILE_INFORMATION fiBuf;  
   GetFileInformationByHandle( hFile, &fiBuf );
   CloseHandle(hFile);
   WORD isHide = (fiBuf.dwFileAttributes) | FILE_ATTRIBUTE_HIDDEN;
   if (isHide == fiBuf.dwFileAttributes)
   {
    bIsHide = TRUE;
   }
   else
   {
    bIsHide = FALSE;
   }
   return TRUE;
}

1 Ответ

3 голосов
/ 23 июня 2010

Использование функции GetFileAttributes .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...