通常当我们双击一个themepack文件时,它会应用到我们的系统上,并且与themepack同名的相应文件夹保存在
中C:\Users\<username>\AppData\Local\Microsoft\Windows\Themes
现在,如果我有多个themepack文件并且我已经应用了每个文件至少一次,那么所有的主题包都会在Themes文件夹中有一个相应的文件夹。现在我想知道在我的机器上以编程方式应用了哪个特定主题。
(当我们使用主题包文件时,Custom.theme文件未更新)
答案 0 :(得分:1)
我很确定没有可以检索该信息的API。这是有道理的,它并不真正相关。应用程序永远不需要知道用户选择的主题包的名称。
的用途例如,使用SZ_THDOCPROP_DISPLAYNAME
调用GetCurrentThemeName()
function和/或GetThemeDocumentationProperty()
function。aspx)将告诉您用户是否已启用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中进行本地化。用户在选择主题时会看到不同的内容。