irc

彼节者有间,而刀刃者无厚;以无厚入有间,恢恢乎其于游刃必有余地矣!

导航

窗口背景颜色设置为护眼色实现方法

设置窗口背景颜色为护眼色

绿色是护眼色,能够减少对眼睛的伤害,缓解视力疲劳;通过右键个性化可以手动设置(这个在网上一搜一大把),很多软件都可以一键实现设置护眼色,像360、金山卫士都可以;但是通过编程怎么实现呢?

搜遍网上居然没有发现这个方面的资料……那还是自己研究吧!

研究过程

在手动设置护眼色时,监控注册表发现rundll32.exe修改了注册表 HKEY_CURRENT_USER\Control Panel\ColorsWindow值;
经过测试修改了Window确实可以实现修改护眼色,但必须重启后才能显示效果。

而360眼睛卫士压跟不需要重启,一键设置后效果马上就出来了,这又是如何实现的?

难道是强制刷新?于是百度不行换谷歌,中文不行换英文,找到三种强制刷新的方法:

  1. 重启explorer进程
  2. 采用SendMessageTimeout函数发送广播消息
  3. 采用SHChangeNotify函数

然后一一试验,证明以上方法是行不通的!

本来已经陷入僵局,但是关键时候在cplusplus.com上发现在一个关于强制刷新的问题解答
连接如下:http://www.cplusplus.com/forum/windows/116006/
其中提到到两个API函数SetSysColors GetSysColor
一试之下果然OK,于是峰回路转!

实现方法

实现方法就很简单了,主要为两步

  1. 修改注册表键值,HKEY_CURRENT_USER\Control Panel\ColorsWindow199 237 204
  2. 调用SetSysColors将窗口背景色刷新为保护色

具体编码就太简单了,我就不贴了,下面把测试工程传上来

常用的护眼色值

苹果绿 rgb 204 255 204 #CCFFCC
杏仁黄 rgb 250 249 222 #FAF9DE
青草绿 rgb 227 237 205 #E3EDCD
海天蓝 rgb 220 226 241 #DCE2F1
豆沙绿 rgb 199 237 204 #C7EDCC (这个最被推荐)
灰 色 rgb 235 235 228 #EBEBE4

参考网址

  1. http://blog.csdn.net/openhero/article/details/8159471
  2. http://www.cplusplus.com/forum/windows/116006/

  1. 我估计应该有其他方法,如果有哪个同学知道请分享一下
  2. 我的测试程序及代码,实现在win7下一键切换护眼色和还原
    代码:https://files.cnblogs.com/files/happyhaoyun/eyecare_src.zip
    程序:https://files.cnblogs.com/files/happyhaoyun/eyecare_bin.zip

posted on 2015-06-10 17:24  irc  阅读(1960)  评论(0)    收藏  举报

Top