立即应用 HKCU\Control Panel\Colors 中的更改

问题描述 投票:0回答:1

我最近一直在开发一个颜色自定义程序,并发现 desk.cpl 是如何立即应用

HKCU\Control Panel\Colors
更改的。 我怎样才能自己做到这一点(用任何语言)?我不想使用 Windows API
SetSysColors
函数,因为我主要用 Python 编写这个程序。有什么办法可以做到这一点吗?

备注

  • 我发现
    desk.cpl
    实际上更改了注册表(但我不确定如何)
  • Winapi
    SetSysColors
    函数发出
    WM_SYSCOLORCHANGE
    消息。

我已经尝试过了

  • 使用
    WM_SYSCOLORCHANGE
     向所有组件发出 
    BroadcastSystemMessage
  • 尽可能多地分析
    desk.cpl
    行为,找出所有行为
  • 重新启动explorer.exe
python windows winapi colors registry
1个回答
0
投票

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)))
© www.soinside.com 2019 - 2024. All rights reserved.