我正在尝试用我自己的自定义对话框替换所有 Windows 通用(打开/保存)文件对话框调用。从目前为止我读到的内容来看,我可以通过自己编写或使用诸如 detours 或 easyhook 之类的库来 Hook 调用。但是最近有人告诉我,由于 session 架构的变化,这种方法只能在 Vista 之前实现,并且不可能在 Win 7/8 中进行这种切换。现在,我不是一个喜欢“不可能”这个词的人 :) 因此,如果您对此事有任何建议,请务必告诉我,我将不胜感激。
对于我要做什么,我的应用程序将由用户运行,它将驻留在托盘中,当用户从任何应用程序调用打开/保存对话框时,它应该用自定义对话框替换默认的通用对话框对话。
最佳答案
较新的样式 Common Item dialogs作为标准 COM 对象实现,因此您可以只实现自己的 DLL,它公开相同的 COM 接口(interface)(IFileOpenDialog
、IFileSaveDialog
等),然后覆盖用你自己的注册。这样,每个使用对话框的应用程序都会加载您的 DLL 而不是 Microsoft 的。
关于c++ - windows 7 和 8 的常用对话框可以 Hook 吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17951567/