窗口背景颜色设置为护眼色实现方法
设置窗口背景颜色为护眼色
绿色是护眼色,能够减少对眼睛的伤害,缓解视力疲劳;通过右键个性化可以手动设置(这个在网上一搜一大把),很多软件都可以一键实现设置护眼色,像360、金山卫士都可以;但是通过编程怎么实现呢?
搜遍网上居然没有发现这个方面的资料……那还是自己研究吧!
研究过程
在手动设置护眼色时,监控注册表发现rundll32.exe修改了注册表 HKEY_CURRENT_USER\Control Panel\Colors的Window值;
经过测试修改了Window确实可以实现修改护眼色,但必须重启后才能显示效果。
而360眼睛卫士压跟不需要重启,一键设置后效果马上就出来了,这又是如何实现的?
难道是强制刷新?于是百度不行换谷歌,中文不行换英文,找到三种强制刷新的方法:
- 重启explorer进程
- 采用SendMessageTimeout函数发送广播消息
- 采用SHChangeNotify函数
然后一一试验,证明以上方法是行不通的!
本来已经陷入僵局,但是关键时候在cplusplus.com上发现在一个关于强制刷新的问题解答
连接如下:http://www.cplusplus.com/forum/windows/116006/
其中提到到两个API函数SetSysColors GetSysColor
一试之下果然OK,于是峰回路转!
实现方法
实现方法就很简单了,主要为两步
- 修改注册表键值,HKEY_CURRENT_USER\Control Panel\Colors的Window为
199 237 204 - 调用
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 |
参考网址
- http://blog.csdn.net/openhero/article/details/8159471
- http://www.cplusplus.com/forum/windows/116006/
附
- 我估计应该有其他方法,如果有哪个同学知道请分享一下
- 我的测试程序及代码,实现在win7下一键切换护眼色和还原
代码:https://files.cnblogs.com/files/happyhaoyun/eyecare_src.zip
程序:https://files.cnblogs.com/files/happyhaoyun/eyecare_bin.zip
浙公网安备 33010602011771号