[delphi编程]如何实现监视指定文件夹的文件操作

2024-12-28 17:55:09
推荐回答(2个)
回答1:

建议不要用FindNextChangeNotification,因为确实不清楚如何获得改变了的文件名,API的话可以使用ReadDirectoryChangesW来完成这个任务(当然还有一个也很好的API SHChangeNotifyRegister)。驱动层的监视更为好,不过这里我就不谈了。

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;

char buffer[ dwListBaseLength ] = { 0 };
FILE_NOTIFY_INFORMATION *pNotify = (FILE_NOTIFY_INFORMATION *) buffer;
DWORD BytesReturned = 0;

ReadDirectoryChangesW( hDirectory, pNotify, sizeof(buffer),
true, FILE_NOTIFY_CHANGE_FILE_NAME, &BytesReturned, NULL, NULL );

ShowMessage( WideCharToString( pNotify->FileName ) );

我是用bcb写的,你将她转为delphi就行了。

回答2:

这个问题太难了,真是爱莫能助呀。哎。。。