当用户重命名文件时,有什么方法可以用任何语言来挂钩我的程序吗?

例如:用户重命名文件并按 Enter 键(或单击鼠标)以确认重命名操作。在文件实际重命名之前,我的程序“侦听”此事件并弹出一条消息“您确定要将 C: est\file.txt 重命名为 C: est est.txt 吗?”。

我在想/希望这可以通过 C++、C# 或 .NET 实现。但我不知道去哪里寻找。

有帮助吗?

解决方案

您可能可以通过使用来解决这个问题 文件系统观察者类 在.NET框架中。

来自课堂发言:

您可以注意文件或目录的重命名,删除或创建。例如,要查看重命名文本文件,请将过滤器属性设置为“*.txt”,并使用针对其参数指定的更名为Waitforchanged方法。

其他提示

我的猜测是这是 不是 有可能,我确实发现了 这是用于监视文件夹上的操作(包括重命名),但似乎没有类似的文件方法。

@Richard,如果您只需要监视更改,FileSystemWatcher 就很好,但他需要中断它们,而这是它无法做到的。

IFileOperationProgressSink.PreRenameItem 是我所知道的最接近支持的东西。不幸的是,它不是资源管理器的挂钩 - 所以你只能将它用于你自己的 IFileOperation 行动。根据您的需要,您可以编写一个 shell 扩展来做您自己的事情 ConfirmRename (或其他东西),然后从那里分支。

否则,你正在寻找挂钩 SHFileOperation, , 我认为。这必须在非托管代码中完成,因为您将被加载到 Explorer.exe 中。对于 Vista,这已更改为 IFileOperation - 这可能意味着你必须挂钩它的创建并传递你的模拟。

就我个人而言,我认为既然你在谈论重命名, 威廉泰尔的想法 的确认 改变,并在必要时撤消它是最好的主意。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top