我需要监视特定文件集(或仅一个文件)的更改,并让Windows向我的应用程序报告。 很有可能大多数文件都位于同一目录中,但我更喜欢按文件监视系统。
我发现了这个例子http://codewee.com/view.php?idx=20 但是该示例仅监视特殊的Desktop文件夹。
首先通过调用 SHGetSpecialFolderLocation ,然后使用生成的LPITEMIDLIST 在 SHChangeNotifyRegister 函数中(通过 SHChangeNotifyEntry 结构)
我无法将其推广到任意目录。 MS Docs表示,将来无论如何都不会支持 SHGetSpecialFolderLocation , SHGetFolderLocation 应该代替。
但是同样, SHGetFolderLocation 已被弃用,甚至没有提到它没有字符串/路径 参数。
是否有任何方便的功能可以获取目录路径或完整的文件名 并生成LPITEMIDLIST,然后将其粘贴到 SHChangeNotifyRegister ?
答案 0 :(得分:5)
ReadDirectoryChangesW
,ReadDirectoryChangesExW
SHParseDisplayName
可用于将文件路径转换为PIDL
,与SHChangeNotifyRegister
一起使用