windows xp: change background color programatically (how to redraw Desktop after changing registry key?)

孤街醉人 提交于 2020-01-14 03:04:53

问题


How do I change the background/wallpaper color on Windows XP programatically? I'm changing the registry key HKEY_CURRENT_USER\Control Panel\Colors\Background (with regedit), but changing that key doesn't change the background color, although that key is changed when I change the color from the Display Properties window. Any idea why?

EDIT: ah if I change the key and reboot, the effect takes change. So how do I make it take change without rebooting?


回答1:


I think you need to call the Windows API function SetSysColors.




回答2:


You can't do it by changing the registry directly. You need to use the API function SystemParametersInfo with the SPI_SETDESKWALLPAPER flag, and also pass SPIF_SENDCHANGE as the last parameter to have the change broadcast to other applications (including the Window Manager).

BTW, changing the backgroupnd by editing the registry using RegEdit isn't "programatically".



来源:https://stackoverflow.com/questions/5226466/windows-xp-change-background-color-programatically-how-to-redraw-desktop-after

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!