[programación Delphi] Cómo monitorear archivos en una carpeta específica
No se recomienda utilizar FindNextChangeNotification porque no está claro cómo obtener el nombre del archivo modificado. La API puede utilizar ReadDirectoryChangesW para realizar esta tarea (por supuesto, también existe una buena API SHChangeNotifyRegister). Las capacidades de monitoreo de la capa de controladores son aún mejores, pero no entraré en eso aquí.
char *strDir = "k:/temp/Other";
HANDLE hDirectory;
hDirectory = CreateFile( strDir, GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL
);
const unsigned int dwListBaseLength = sizeof( FILE_NOTIFY_INFORMATION ) + MAX_PATH;
búfer de caracteres[ dwListBaseLength ] = { 0 };
FILE_NOTIFY_ INFORMACIÓN *pNotify = (FILE_NOTIFY_INFORMATION *) búfer
DWORD BytesReturned = 0; /p>
ReadDirectoryChangesW( hDirectory, pNotify, sizeof(buffer),
¿Cuál es el valor del buffer?sizeof(buffer),
true, FILE_NOTIFY_CHANGE_FILE_NAME, &BytesReturned, NULL, NULL );
ShowMessage( WideCharToString( pNotify- >FileName ));
Lo escribí en bcb, puedes convertirlo directamente a Delphi.