手动获取现代UI主题颜色

时间:2012-12-02 21:26:16

标签: winapi windows-8 registry

有没有办法找出Modern UI的当前主题颜色集? WinAPI函数或注册表值对我来说是最好的解决方案。

按当前主题颜色,我的意思是this

2 个答案:

答案 0 :(得分:2)

使用procmon.exe反向生成我的系统后,我发现路径HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Accent\ColorSet_Version3下的注册表项似乎是所选颜色。

我可以使用注册表编辑器(regedit.exe)读取和写入,并立即应用所有更改。

编辑:经过一些进一步的研究,它似乎是只读的,改变后不再“应用”了。路径HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SystemProtectedUserData\S-1-5-21-3552576858-2522621019-3615910227-1001\AnyoneRead\Colors\ImmersiveColorIndex_Version3似乎有什么,但我无法改变价值(即使有管理员权限)

答案 1 :(得分:2)

在UxTheme.dll中有一个名为GetImmersiveUserColorSetPreference的私有函数。如果将第一个参数设置为true,则应使用GameScripting提到的注册表中的值(并通知系统更改)。

我写过关于检索沉浸式/现代/地铁颜色here的文章。请记住,您将无法在WinRT Windows应用商店应用中使用这些未记录的功能,因为它们将无法通过认证。