可以挂钩Windows 7和8个常用对话框

时间:2013-07-30 15:44:16

标签: c++ winapi windows-7 hook filedialog

我正在尝试用我自己的自定义对话框替换所有Windows Common(打开/保存)文件管理器调用。从我到目前为止所读到的内容来看,我可以通过编写自己的函数或使用诸如绕道或easyhook之类的库来挂钩调用。但有人最近告诉我,这种方法只能在Vista之前实现,因为会话体系结构的变化并不可能在Win 7/8中进行这样的切换。现在,我不是一个喜欢“不可能”这个词的人:)所以,如果你对此事有任何建议,那么请告诉我,我将感激你的善意。

对于我该做什么,我的应用程序将由用户运行,它将驻留在托盘中,当用户从任何应用程序调用打开/保存对话框时,它应该用自定义替换默认的通用对话框对话。

1 个答案:

答案 0 :(得分:4)

较新的样式Common Item dialogs是作为标准COM对象实现的,因此您可以实现自己的DLL,它暴露相同的COM接口(IFileOpenDialogIFileSaveDialog等),然后覆盖注册表中的默认注册与您自己的注册。这样,使用对话框的每个应用程序都将加载您的DLL而不是Microsoft的。