问题
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