我最近一直在开发一个颜色自定义程序,并发现 desk.cpl 是如何立即应用
HKCU\Control Panel\Colors
更改的。
我怎样才能自己做到这一点(用任何语言)?我不想使用 Windows API SetSysColors
函数,因为我主要用 Python 编写这个程序。有什么办法可以做到这一点吗?
备注
desk.cpl
实际上更改了注册表(但我不确定如何)SetSysColors
函数发出 WM_SYSCOLORCHANGE
消息。我已经尝试过了
WM_SYSCOLORCHANGE
向所有组件发出
BroadcastSystemMessage
desk.cpl
行为,找出所有行为SetSysColors
是唯一的方法,它调用内核。
根据this邮件列表帖子,ctypes代码如下所示:
from ctypes.wintypes import windll, c_int, byref, RGB
COLOR_BACKGROUND = 1 # from winuser.h or win32con
SetSysColors = windll.user32.SetSysColors
which_color = RGB(255,0,0) # red
SetSysColors(1, byref(c_int(COLOR_BACKGROUND)), byref(c_int(which_color)))