繁体   English   中英

我怎么知道我的系统上应用了哪个主题包?

[英]How can I know which themepack is applied on my system?

通常,当我们双击一个themepack文件时,它会应用在我们的系统上,并保存一个与themepack同名的相应文件夹。

C:\Users\<username>\AppData\Local\Microsoft\Windows\Themes 

现在如果我有多个themepack文件并且我已经将它们中的每一个应用了至少一次,那么所有的主题包都将在Themes文件夹中具有相应的文件夹。 现在我想知道在我的机器上以编程方式应用了哪个特定主题。

(当我们使用themepack文件时,Custom.theme文件未更新)

我很确定没有可以检索该信息的API。 这是有道理的,它并不真正相关。 应用程序永远不需要知道用户选择的主题包的名称。

可以使用API​​获得的内容,以及有用的内容用户启用的主题的名称和属性。 例如,调用GetCurrentThemeName()函数和/或GetThemeDocumentationProperty()函数用的.aspx) SZ_THDOCPROP_DISPLAYNAME会告诉你用户是否启用Aero主题与否。 或者,如果他们使用的是不是Aero的自定义主题。 但是,为了确保,我测试了它,这些函数都没有返回我当前选择的主题包的名称。

但是,您可以阅读注册表以获取所需的信息。 在以下位置找到它:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\CurrentTheme

该值将包含与当前所选主题包的完整路径对应的字符串,例如:

C:\Users\billg\AppData\Local\Microsoft\Windows\Themes\Pink Polka Dots.theme

如果需要,可以使用文件名作为主题包的名称来删除路径规范和扩展名,例如Pink Polka Dots

但这不是一个完整的解决方案,因为它不考虑本地化。 特别是对于系统提供的主题包,文件名将使用英文,但主题包的名称将在UI中进行本地化。 用户在选择主题时会看到不同的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM