如何通过Win API监视文件更改

qua*_*oam 1 c++ winapi

我需要监视特定文件集(或只是一个文件)的更改,并让Windows报告给我的应用程序.很可能,大多数文件都在同一个目录中,但我更喜欢每个文件的监控系统.

我找到了这个示例http://codewee.com/view.php?idx=20 但该示例仅监视特殊的Desktop文件夹.

首先调用SHGetSpecialFolderLocation,然后在SHChangeNotifyRegister函数中使用结果LPITEMIDLIST (通过SHChangeNotifyEntry结构)

我无法将它概括为任意目录.MS Docs表示将来不支持SHGetSpecialFolderLocation, 应该使用SHGetFolderLocation.

但同样,SHGetFolderLocation已被弃用,甚至没有提及它没有字符串/路径参数.

是否有任何方便的功能,它采用目录路径或完整的文件名,并生成LPITEMIDLIST,然后可以将其粘贴到SHChangeNotifyRegister

Igo*_*nik 5

FindFirstChangeNotification 等.

ReadDirectoryChangesW, ReadDirectoryChangesExW

SHParseDisplayName可用于将文件路径转换为PIDL,以供使用SHChangeNotifyRegister