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

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

我正在尝试在 Windows 10 的 UI 中获取一些颜色设置,例如窗口激活/非激活时窗口标题栏的颜色,窗口的边缘颜色。或者更简单地说,我正在 Windows 10 中的 winuser.h(Documentation) 中寻找类似 getSysColor() 的函数。

What I mean by

这是我尝试过的:

    winuser.h 中的
  1. getSysColor(nIndex)

    此功能在 Windows 10 下无法正常工作,因为根据 (

    Documentation
    ) 不支持某些按键 (nIndex)。例如,如果我在Python中用
    ctypes.windll.user32.GetSysColor(2)
    询问激活窗口标题栏的颜色,它将返回##99B4D1的颜色,这可能是Windows 7下的颜色,而不是Windows 10中的##0078D7。但是我不想要 Windows 7 的颜色集

  2. dwmapi.h 中的
  3. DwmGetColorizationColor()

    有人建议这个函数可以检索标题栏的颜色。但我只能得到一个奇怪的黄色(##F8FFA9)和

    ctypes.windll.dwmapi.DwmGetColorizationColor()
    ,这绝对不是我想要的。同时该函数只能提供标题栏的颜色,而不是Windows UI中使用的所有颜色。

python c++11 winapi
1个回答
0
投票

您需要使用 UIColorType::Accent 调用

UISettings::GetColorValue

遗憾的是,官方 Python/WinRT 绑定不支持任何比 Python 3.9 更新的内容,因为它们已被放弃(虽然您可以直接使用

RoGetActivationFactory
和朋友,但这并不方便),但社区分支工作得很好。

您需要 winrt-Windows.UIwinrt-Windows.UI.ViewManagement:

from winrt.windows.ui.viewmanagement import UISettings, UIColorType

accent_color = UISettings().get_color_value(UIColorType.ACCENT)
print("accent color:", accent_color.r, accent_color.g, accent_color.b, accent_color.a)
© www.soinside.com 2019 - 2024. All rights reserved.