c++ - 如何通过 Win API 监控文件变化

标签 c++ winapi

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

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

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

我无法将其泛化到任意目录。 MS Docs 说 SHGetSpecialFolderLocation 无论如何以后都不会被支持, 应改用 SHGetFolderLocation

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

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

最佳答案

FindFirstChangeNotification

ReadDirectoryChangesW , ReadDirectoryChangesExW

SHParseDisplayName可用于将文件路径转换为 ​​PIDL,以便与 SHChangeNotifyRegister

一起使用

关于c++ - 如何通过 Win API 监控文件变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54024915/

相关文章:

c++ - 定义调用函数以传递元素的自定义迭代器

c++ - 我的循环寻找素数的问题

c++ - VS2012自备静态库抛链接器错误

c++ - 64 位平台上的 WinAPI IcmpSendEcho

c++ - 我需要为我的应用程序制作和加载多大尺寸的 ImageList 图标(考虑更高的 DPI)?

winapi - 如何(以编程方式)获取 Windows UAC 虚拟化文件的位置?

c++ - Listview 中的第一次机会异常设置检查状态

c++ - Open GL ES 2.0 多个drawElements和绘制顺序

c++ - OpenCV - 薄板样条翘曲的合适实现

c - 获取由 ExtTextOut 绘制的文本