当用户重命名文件时,有任何语言可以挂钩我的程序吗?
例如: 用户重命名文件并按Enter(或单击)以确认重命名操作。在文件实际重命名之前,我的程序“侦听”此事件并弹出一条消息“你确定要将C:\ test \ file.txt重命名为C:\ test \ test.txt吗?”。 / p>
我在想/希望这可以通过C ++,C#或.NET实现。但我没有任何线索可以在哪里寻找。
答案 0 :(得分:5)
您可以通过在.NET框架中使用FileSystemWatcher class来解决此问题。
来自课堂评论:
你可以留意重命名,删除, 或创建文件或目录。 例如,要注意重命名 文本文件,将Filter属性设置为 “* .txt”并调用WaitForChanged 为指定的重命名方法 它的参数。
答案 1 :(得分:0)
我的猜测是不可能,我确实找到this用于监视文件夹上的操作(包括重命名),但似乎没有类似的方法对于文件。
@Richard,FileSystemWatcher很好,如果你只需要监视更改,但他需要中断它们不能做的事情。
答案 2 :(得分:0)
IFileOperationProgressSink.PreRenameItem
是我所知道的最接近支持的内容。不幸的是,它不是资源管理器的钩子 - 因此您只能将它用于您自己的IFileOperation
操作。根据您的需要,您可以编写一个shell扩展来执行自己的ConfirmRename
(或其他内容),并从那里进行分支。
否则,我认为你正在考虑挂钩SHFileOperation
。这必须在非托管代码中完成,因为您将加载到Explorer.exe中。对于Vista,这已经改为IFileOperation
- 这可能意味着你必须挂钩它的创建并传递你的模拟。
我个人认为,因为你正在谈论重命名,wilhelmtell's idea在更改后确认,并在必要时撤消它是最好的主意。