windows 7 和 8 的常用对话框可以挂机吗

Posted

技术标签:

【中文标题】windows 7 和 8 的常用对话框可以挂机吗【英文标题】:Can windows 7 and 8 common dialogs be hooked 【发布时间】:2013-07-30 15:44:16 【问题描述】:

我正在尝试用我自己的自定义对话框替换所有 Windows 通用(打开/保存)文件对话框调用。从我目前阅读的内容来看,我可以通过编写自己的方法或使用诸如 detours 或 easyhook 之类的库来对调用进行挂钩。但是最近有人告诉我,这种方法只能在Vista之前使用,因为会话架构发生了变化,在Win 7/8中不可能进行这种切换。现在,我不是一个喜欢“不可能”这个词的人:) 所以如果你对这件事有任何建议,任何建议,请告诉我,我会感谢你的好意。

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

【问题讨论】:

请将此设为可选。至少有一些用户会更喜欢 Windows 提供的版本。 你以前做过hook吗? 不支持。不是说不可能,只是不支持。你也进入了应用程序兼容的危险世界,因为应用程序对常见的对话框做了各种疯狂的事情。例如,所有的 CDM 消息、CDN 通知、自定义模板…… 哦,天哪……与挂钩常见对话框相比,替换资源管理器可能是微不足道的。 @BenVoigt:感谢您的意见。不,我没有上钩的经验。 【参考方案1】:

较新的样式 Common Item dialogs 被实现为标准 COM 对象,因此您只需实现自己的 DLL 即可公开相同的 COM 接口(@98​​7654322@、IFileSaveDialog 等),然后覆盖注册表中的默认注册用你自己的。这样,每个使用对话框的应用程序都将加载您的 DLL,而不是 Microsoft 的。

【讨论】:

请问这种方法是否有任何延迟并发症。比如用户安装更新程序或操作系统有更新时? 应用程序不会对其产生任何影响,但操作系统更新/修复可能会恢复默认注册。

以上是关于windows 7 和 8 的常用对话框可以挂机吗的主要内容,如果未能解决你的问题,请参考以下文章

针对VM从挂机-启动后,docker相关服务的无法使用问题!

如何在 Windows 7、8 和 10 上查看已保存的 WiFi 密码

Windows 8 Phone - 访问 NFC 阅读器?

Windows 7系统用Windows 7 Loader V1.8.0 By Daz如何操作呢

QT- 在 Windows 7 中安装

关于Windows_8.1/Windows 7下普通用户运行软件提示需要输入管理员密码解决方法