我不能比我的头衔清楚。 :P
每当用户在Windows资源管理器中重命名文件(并且仅在资源管理器中)时,我想运行我的程序。这是一个简单的模拟:
指向教程的简单链接将非常有用。我找不到任何东西。 :/
提前谢谢。
P.S。我是C ++的新手
答案 0 :(得分:3)
看起来Windows API挂钩可能是您最好的选择。您将要拦截与Windows文件重命名相关的所有调用(即MoveFile,MoveFileEx,SHFileOperation,可能更多)。有一些商业和开源解决方案; Microsoft Detours,Madshi's madCodeHook以及免费的开源EasyHook。
如果操作正确,此方法将允许您捕获系统上的所有文件重命名。
答案 1 :(得分:2)
我会尽量避免挂钩API。它变得非常难看。
我认为有两种方法可以解决这个问题 两种方式都有一些共同因素:
ReadDirectoryChangesW
API。有关该API的非常好的实现,请参阅此内容
article 方法一是使用Explorer外壳扩展中的ReadDirectoryChangesW
,它不执行任何其他操作。保持最小化。我有理由相信我在微软的一些文档中看到了“无所事事”的shell扩展。
方法二是将代码打包为DLL并使用系统挂钩将DLL加载到Explorer中。系统挂钩应仅在Explorer内加载,以防止通过ReadDirectoryChangesW
发送虚假通知。
希望这会有所帮助,并且你不会将它用于邪恶的东西。