2008-08-23 84 views
7

用户重命名文件时,有什么方法可以用任何语言来挂钩我的程序吗?用Windows资源管理器的重命名事件挂钩我的程序

例如: 用户重命名一个文件并按下回车键(或点击离开)以确认重命名操作。在文件实际重命名之前,我的程序会“侦听”这个事件并弹出一条消息,提示“你确定要将C:\ test \ file.txt重命名为C:\ test \ test.txt?”。

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

回答

5

你可以通过在.NET框架中使用FileSystemWatcher class来解决这个问题。

从类的言论:

你可以看为重命名,删除, 或创建文件或目录。 例如,要查看 文本文件的重命名,请将Filter属性设置为 “* .txt”,然后调用WaitForChanged 方法,并为其参数指定更名为 。

0

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

@理查德,FileSystemWatcher是很好的,如果你只需要监视变化,但他需要打断他们不能做的事情。

0

IFileOperationProgressSink.PreRenameItem是我所知道的最接近的支持东西。不幸的是,它不是Explorer的钩子 - 所以你只能用它来做你自己的IFileOperation操作。根据你的需要,你可以编写一个shell扩展来做你自己的ConfirmRename(或其他),并从那里分支。

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

就我个人而言,我想因为您正在谈论重新命名,wilhelmtell's idea确认更改,并在必要时撤消它是最好的主意。

相关问题