С MSDN :
Если вы ссылаетесь на фрагмент кода на этой странице:
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
void _tmain(int argc, TCHAR *argv[])
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
if( argc != 2 )
{
_tprintf(TEXT("Usage: %s [target_file]\n"), argv[0]);
return;
}
_tprintf (TEXT("Target file is %s\n"), argv[1]);
hFind = FindFirstFileEx(argv[1], FindExInfoStandard, &FindFileData,
FindExSearchNameMatch, NULL, 0);
if (hFind == INVALID_HANDLE_VALUE)
{
printf ("FindFirstFileEx failed (%d)\n", GetLastError());
return;
}
else
{
_tprintf (TEXT("The first file found is %s\n"),
FindFileData.cFileName);
FindClose(hFind);
}
}
Вы увидите, что вы можете вызвать FindFirstFileEx, где argv 1 - это шаблон строки (LPCSTR) для поиска, а & FindFileData - структура данных, которая содержит информацию о файле найденных данных. HFind это дескриптор, который вы используете при последующих вызовах с FindNextFile .. Я думаю, вы также можете добавить дополнительные параметры поиска, используя четвертый и шестой параметр для FindFirstFileEx.
Удачи!
РЕДАКТИРОВАТЬ: Кстати, я думаю, что вы можете проверить атрибуты файла или каталога с помощью GetFileAttributes () .. Просто передайте имя файла, найденное в FileFindData .. (имя файла может относиться к имени файла или каталогу имя мне кажется)
РЕДАКТИРОВАТЬ: MrVimes, вот что вы могли бы сделать (в псевдокоде)
найти первый файл (соответствует *)
- Проверьте данные поиска файла, если это ".", ".." (на самом деле это не каталоги или файлы)
- если проверка пройдена, проверьте данные поиска файла, если у них есть атрибуты, которые вы ищете (то есть проверьте имя файла, атрибуты файла, , даже время создания файла можно проверить в данных поиска файла , а что нет ) и делай с этим что угодно
- если проверка пройдена, делайте все что нужно с файлом
- если проверка не удалась, либо вызовите findnextfile или end, до вас
Нечто подобное ..