c++ - 如何通过 Win API 监控文件更改
问题描述
我需要监视特定文件集(或仅一个文件)的更改,并让 Windows 向我的应用程序报告。大多数文件可能都在同一个目录中,但我更喜欢每个文件的监控系统。
我找到了这个例子http://codewee.com/view.php?idx=20 但是这个例子只监控特殊的桌面文件夹。
首先通过调用SHGetSpecialFolderLocation ,然后在SHChangeNotifyRegister函数中使用生成的 LPITEMIDLIST (通过SHChangeNotifyEntry结构)
我无法将其推广到任意目录。MS Docs 说将来无论如何都不会支持 SHGetSpecialFolderLocation ,应该改用SHGetFolderLocation 。
但同样,SHGetFolderLocation已被弃用,甚至没有提到它没有字符串/路径参数。
是否有任何方便的函数可以获取目录路径或完整的文件名并生成 LPITEMIDLIST,然后可以将其粘贴到SHChangeNotifyRegister中?
解决方案
ReadDirectoryChangesW
,ReadDirectoryChangesExW
SHParseDisplayName
可用于将文件路径转换为PIDL
, 用于SHChangeNotifyRegister
推荐阅读
- google-maps - Google 地址建议国家/地区限制无法正常工作
- java - 如何在我的 batis 中从 database.confid 中读取属性值
- c# - 列表
循环后不保存 - powershell - 为什么 PowerShell 中的变量扩展为 `-encodedCommand` 而不是其实际值?
- postgresql - Postgresql:为什么 \d+ 表不显示默认为空
- c# - 使用 Jenkins 自动部署 Service Fabric 应用程序会产生“目标不存在”错误
- python - 为什么一维 k 均值聚类比 k 均值初始化混合模型拟合慢?
- excel - 使用 Excel VBA 在 excel 单元格中创建多个换行符
- r - summarise() 出错:无法将组 1 提升为数字
- javascript - MySQL 数据 JSON 格式转 js 函数