В документации для CFindFile указано, что
Ненулевое значение, если файлов больше; ноль, если найденный файл является последним в каталоге или если произошла ошибка. Чтобы получить расширенную информацию об ошибке, вызовите функцию Win32 GetLastError. Если найденный файл является последним файлом в каталоге или соответствующие файлы не найдены, функция GetLastError возвращает ERROR_NO_MORE_FILES.
Итак, как мне узнать, есть ли у меня 1 файл или 0 файлов, если вызов FindNextFile возвращает одно и то же значение?
Кажется, что вызов FindFile::GetFilePath() терпит неудачу (что непреднамеренно приводит к сбою моего приложения), если не найдено ни одного файла.
pLog->Log(_T("Finding files in [%s]"), 1, szFilePath);
if (!oFindFile.FindFile(szFilePath, 0))
{
pLog->Log(_T("Failed to find file in directory: [%s]"),1,szDirectory);
return false;
}
bool moreFiles = true;
while(moreFiles)
{
moreFiles = oFindFile.FindNextFile();
if (oFindFile.IsDots())
{
continue;
}
CString szFileName = oFindFile.GetFilePath();
pLog->Log(_T("Found file [%s]"), 1, szFileName);
pVector->push_back(szFileName);
}
return true;
Изменить
CString szFilePath = _T("C:\documents and settings\username\desktop\*.lnk");
CString szDirectory = T("C:\documents and settings\username\desktop");