What function in WinApi32 is responsible for searching for files? And is it possible to specify the search parameters? For example, find files starting with a specific letter.
- FindFirst / FindNext - Abyx
- Why didn't you google "WinAPI Find file" ... - Vladimir Martyanov
|
2 answers
HANDLE FindFirstFile( LPCTSTR lpFileName, // Строка содержащая путь для поиска файлов. LPWIN32_FIND_DATA lpFindFileData // Информация о найденном файле ); BOOL FindNextFile( HANDLE hFindFile, // Указатель на файл из предыдущего поиска LPWIN32_FIND_DATA lpFindFileData // Информация об очередном найденном файле ); - Wrote the code: LPWIN32_FIND_DATA data; HANDLE h = FindFirstFile (" . ", Data); if (! (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) cout << "File found!" << endl; For some reason, the error "The expression must have a class type" - JamesJGoodwin 10:26
- @JamesJGoodwin: You do not need
LPWIN32_FIND_DATA data, butWIN32_FIND_DATA data, and pass a pointer to this in the function. - VladD
|
Here is a minimal example from the MSDN documentation :
#include <windows.h> #include <tchar.h> #include <stdio.h> #pragma comment(lib, "User32.lib") // ... WIN32_FIND_DATA FindFileData; HANDLE hFind = FindFirstFile(TEXT("C:\\W*"), &FindFileData); // ^^^^^^^^ это маска для поиска if (hFind == INVALID_HANDLE_VALUE) { _tprintf(TEXT("FindFirstFile failed (%d)\n"), GetLastError()); return; } do { if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { _tprintf(TEXT(" %s <DIR>\n"), ffd.cFileName); } else { LARGE_INTEGER filesize; filesize.LowPart = ffd.nFileSizeLow; filesize.HighPart = ffd.nFileSizeHigh; _tprintf(TEXT(" %s %ld bytes\n"), ffd.cFileName, filesize.QuadPart); } } while (FindNextFile(hFind, &ffd) != 0); DWORD dwError = GetLastError(); if (dwError != ERROR_NO_MORE_FILES) { _tprintf(TEXT("Listing failed (%d)\n"), GetLastError()); return; } FindClose(hFind); Functions used: FindFirstFile , FindNextFile , FindClose .
|