You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python获取Windows 10系统UI(配色主题)的颜色设置?

获取Windows 10系统UI颜色的替代方案

需求说明

需要获取Windows 10系统UI的各类颜色设置,包括:

  • 激活/未激活状态下的窗口标题栏颜色
  • 窗口边框颜色
    核心是寻找Windows 10中替代winuser.h里GetSysColor()函数的方案——该函数在Win10下部分参数已失效,无法返回当前系统的真实配色。

示意图(标注激活窗口标题栏颜色位置):
激活窗口标题栏颜色标注

已尝试的无效方法

  • GetSysColor()函数:
    该函数在Windows 10下部分nIndex参数不再被支持。例如用Python代码ctypes.windll.user32.GetSysColor(2)获取激活窗口标题栏颜色时,返回的是#99B4D1(Windows 7配色),而非Win10实际使用的#0078D7,不符合需求。

  • DwmGetColorizationColor()函数:
    调用ctypes.windll.dwmapi.DwmGetColorizationColor()得到的是异常的#F8FFA9黄色,并非目标标题栏颜色。且该函数仅能获取标题栏颜色,无法覆盖所有Windows UI颜色需求。

可行解决方案

在Windows 10中,正确获取系统UI颜色的方式是使用**UISettings类**(属于Windows.UI.ViewManagement命名空间),它可以获取当前系统主题下的各类UI元素颜色,完全适配Win10及以上版本。以下是Python实现示例:

import winrt.windows.ui.viewmanagement as viewmanagement

# 初始化UISettings实例
ui_settings = viewmanagement.UISettings()

# 获取激活窗口标题栏颜色并转换为RGB格式
active_title_color = ui_settings.get_color_value(viewmanagement.UIColorType.ACTIVATED_TITLE_BAR)
r = active_title_color >> 16 & 0xFF
g = active_title_color >> 8 & 0xFF
b = active_title_color & 0xFF
print(f"激活窗口标题栏颜色: #{r:02X}{g:02X}{b:02X}")

# 获取未激活窗口标题栏颜色
inactive_title_color = ui_settings.get_color_value(viewmanagement.UIColorType.INACTIVATED_TITLE_BAR)
r = inactive_title_color >> 16 & 0xFF
g = inactive_title_color >> 8 & 0xFF
b = inactive_title_color & 0xFF
print(f"未激活窗口标题栏颜色: #{r:02X}{g:02X}{b:02X}")

# 获取窗口边框颜色
border_color = ui_settings.get_color_value(viewmanagement.UIColorType.WINDOW_BORDER)
r = border_color >> 16 & 0xFF
g = border_color >> 8 & 0xFF
b = border_color & 0xFF
print(f"窗口边框颜色: #{r:02X}{g:02X}{b:02X}")

补充说明

  • UISettings会跟随系统主题(浅色/深色/自定义颜色)实时返回正确的UI颜色。
  • 通过UIColorType枚举还可获取更多UI元素颜色,比如菜单背景、按钮前景色等,覆盖大部分系统UI颜色需求。

内容的提问来源于stack exchange,提问作者bhj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 22:30:01