Αν κατάλαβα καλά από τα links που έχεις βάλει, ψάχνεις για κώδικα που να κάνει enumerate τα αρχεία ενός φακέλου χρησιμοποιώντας Win32 API calls.
Έφτιαξα ένα functions σε generic C++ και Win32 API που δέχεται 2 παραμέτρους. Η πρώτη είναι η "
lpszFakelosArxeia" όπου είοναι ο φακελος μαζεί με τα search wildchar στο τελος (π.χ.: "C:\Works\*.*") και η δευτερη είναι η "
lpszArxeioGiaSosimo", το αρχείο κειμένου όπου θα βγεί το αποτέλεσμα (π.χ.: "C:\Works\EnumFiles.txt") .
Σειμήωση: Χρησημοποιούντε unicode functions για όλα τα strings.
void EnumFiles(LPCTSTR lpszFakelosArxeia, LPCTSTR lpszArxeioGiaSosimo)
{
WIN32_FIND_DATA wfd;
HANDLE hFind, hFileToSave;
TCHAR szLineOut[1024];
DWORD dwBytesWritten;
hFileToSave = CreateFileW(lpszArxeioGiaSosimo,
GENERIC_WRITE,
0,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(hFileToSave != INVALID_HANDLE_VALUE)
{
hFind = FindFirstFile(lpszFakelosArxeia, &wfd);
if(hFind != INVALID_HANDLE_VALUE)
{
wsprintf((LPTSTR)&szLineOut, _T("Arxeia tis anazitisis: %s\r\n"), lpszFakelosArxeia);
WriteFile(hFileToSave, &szLineOut, _tcslen((LPCTSTR)&szLineOut) * sizeof(TCHAR), &dwBytesWritten, NULL);
do
{
wsprintf((LPTSTR)&szLineOut, _T("%s\r\n"), &wfd.cFileName);
WriteFile(hFileToSave, &szLineOut, _tcslen((LPCTSTR)&szLineOut) * sizeof(TCHAR), &dwBytesWritten, NULL);
}
while(FindNextFile(hFind, &wfd));
FindClose(hFind);
}
CloseHandle(hFileToSave);
}
}
Παράδειγμα:
EnumFiles(_T("D:\\Works\\*.*"), _T("D:\\Works\\EnumFiles.txt"));