gpt4 book ai didi

winapi - Windows 10主题变更通知/订阅方式

转载 作者:行者123 更新时间:2023-12-02 08:25:00 25 4
gpt4 key购买 nike

正如 yolu 可能已经注意到的,微软在 Windows 10 中引入了一种现代的“主题”,涉及基本的操作系统元素,如开始菜单和任务栏。在较新的版本中,您可以选择“浅色”主题作为默认黑色主题的替代方案。

我想知道是否有一个 API 或钩子(Hook)可以优雅且(更重要地)有效地检查实时主题更改(在 MS 文档中没有找到任何与此相关的内容,但恕我直言,这些 gem 通常都隐藏在那里)。

具体问题:当您的桌面应用程序带有系统托盘图标时,您很可能将其设计为明亮的。几乎所有现代 Windows 图标都具有这种风格(简单且白色,在黑色任务栏上具有良好的可读性)。现在,您可以为浅色主题提供较暗风格的不同版本,但如何注意何时动态应用此版本?

我知道 HCU(Software/Microsoft/Windows/CurrentVersion/Themes/Personalize)下的注册表项,这正是我现在正在使用的。然而,盲目地每 x 毫秒检查一次更改似乎相当尴尬。

如果没有这样的东西可用,我也很高兴听到一些更有效地实现此类检查的想法。

最佳答案

方法一:使用RegNotifyChangeKeyValue

Notifies the caller about changes to the attributes or contents of a specified registry key.

方法 2:使用 WM_SETTINGCHANGE

Applications should send WM_SETTINGCHANGE to all top-level windows when they make changes to system parameters. (This message cannot be sent directly to a window.) To send the WM_SETTINGCHANGE message to all top-level windows, use the SendMessageTimeout function with the hwnd parameter set to HWND_BROADCAST.

我倾向于使用第二种方法,我已经尝试过,并且已经能够成功工作。

最小代码示例:

case WM_SETTINGCHANGE:
{
if (!lstrcmp(LPCTSTR(lParam), L"ImmersiveColorSet"))
{
//theme has been changed
}
}

关于winapi - Windows 10主题变更通知/订阅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57753299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com