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 接口(@987654322@、IFileSaveDialog
等),然后覆盖注册表中的默认注册用你自己的。这样,每个使用对话框的应用程序都将加载您的 DLL,而不是 Microsoft 的。
【讨论】:
请问这种方法是否有任何延迟并发症。比如用户安装更新程序或操作系统有更新时? 应用程序不会对其产生任何影响,但操作系统更新/修复可能会恢复默认注册。以上是关于windows 7 和 8 的常用对话框可以挂机吗的主要内容,如果未能解决你的问题,请参考以下文章
针对VM从挂机-启动后,docker相关服务的无法使用问题!
如何在 Windows 7、8 和 10 上查看已保存的 WiFi 密码