用自定义控件替换Windows控件

时间:2017-04-04 16:16:12

标签: windows winapi com

我一直在尝试寻找改变Windows控件外观的方法。 例如,在Windows级别更改OpenFileDialog UI,或者将文件复制/删除/移动对话框完全转换为其他内容,例如一系列磁盘或填充液体的桶。

环顾四周,我发现我可以编写一个可以用来代替默认窗口的应用程序。但我不知道在哪里或如何从这些开始,甚至我怎么能看到我必须实现什么来实现这一点,也不知道我怎么能告诉Windows使用我的自定义而不是默认的。 / p>

尝试查看微软文档,我99%肯定我要么无法搜索我需要的内容,要么没有文档。

我知道有一些来自Stardock的应用可以做到这一点我可以制作图形,但那里的乐趣在哪里?

有人能指出我正确的方向吗?

只对能够为Windows 10实现此功能感兴趣。

1 个答案:

答案 0 :(得分:0)

理论上,您可以编写自己的IFileOpenDialogIFileSaveDialog实现,并覆盖HKCR\CLSID中的Windows注册。这可能不会影响使用旧的打开/保存公共对话框的旧应用程序。

还有CLSID_ProgressDialog和一些可以接管的进度相关接口但我不知道Explorer是否实际使用这些或它自己的自定义版本。

这显然会破坏你的系统,所以如果沿着这条路走下去,你真的必须知道你在做什么。

在开发此项时,您可以选择将选择性注入到一组有限的进程中,然后挂钩CoCreateInstance

可以使用existing dialogsResource Hacker(添加/移动/隐藏控件和图像)进行更改。这在90年代非常简单,但现在更成问题,因为有些文件受到保护,Windows更新更常见。