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

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

我在想/希望这可以用C ++,C#或.NET。但我没有任何线索在哪里寻找。

===============>>#1 票数:5 已采纳

您可以通过在.NET框架中使用FileSystemWatcher类来解决此问题。

从课堂评论:

您可以观察文件或目录的重命名,删除或创建。 例如,要监视文本文件的重命名,请将Filter属性设置为“* .txt”,并使用为其参数指定的Renamed调用WaitForChanged方法。

===============>>#2 票数:0

我的猜测是,这是不可能的,我也觉得是一个文件夹监控操作(包括重命名),但似乎没有成为文件类似的方法。

@Richard,FileSystemWatcher很好,如果你只需要监视更改,但他需要中断它不能做的事情。

===============>>#3 票数:0

IFileOperationProgressSink.PreRenameItem是我所知道的最接近支持的东西。 不幸的是,它不是资源管理器的钩子 - 因此您只能将它用于您自己的IFileOperation操作。 根据您的需要,您可以编写一个shell扩展来执行自己的ConfirmRename (或其他),并从那里进行分支。

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

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

  ask by pek translate from so

未解决问题?本站智能推荐: