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

时间:2019-01-03 15:07:25

标签: c++ winapi

我需要监视特定文件集(或仅一个文件)的更改,并让Windows向我的应用程序报告。 很有可能大多数文件都位于同一目录中,但我更喜欢按文件监视系统。

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

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

我无法将其推广到任意目录。 MS Docs表示,将来无论如何都不会支持 SHGetSpecialFolderLocation SHGetFolderLocation 应该代替。

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

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

1 个答案:

答案 0 :(得分:5)

FindFirstChangeNotification等。

ReadDirectoryChangesWReadDirectoryChangesExW

SHParseDisplayName可用于将文件路径转换为PIDL,与SHChangeNotifyRegister一起使用