运行 程序中使用的 Win10 主题
Win10 Theme used in running program
运行 程序是否有关于正在使用哪个 Win10 主题的任何信息?
我主要是想获得更多调试信息,因为我有一个用户报告了 "scrambled GUI"。
有什么方法可以从 运行 程序中终止主题或强制使用默认主题?
如果我正确理解您的问题,我会建议您使用 SetWindowTheme。
您应该查看上面 link 提供的信息,看看 docs.microsoft
(以前的 msdn
)在 Remark
部分告诉我们什么:
When pszSubAppName and pszSubIdList are NULL, the theme manager removes the previously applied associations. You can prevent visual styles from being applied to a specified window by specifying an empty string, (L" "), which does not match any section entries.
因此,考虑到这一点,您可以轻松地限制任何 window 的主题,这些 Handle
通过调用 SetWindowTheme
并将两个参数设置为“”大括号之间应该有空格”。
顺便说一句,我强烈不建议从您的应用程序中删除整个 OS 的主题。就个人而言,我会删除任何具有这种有用功能的软件。
重要补充!
过了一段时间我又看了你的问题,我可以回答你问题的第一部分。
您可以通过 UXTheme
单元获取主题信息。
主要你必须使用这两个功能:
下面是一些演示如何执行此操作的代码。
uses
..., UXTheme;
var
ThemeName: Array[0..512] of Char;
ThemeColorScheme: Array[0..512] of Char;
ThemeSizeName: Array[0..512] of Char;
PropertyName: Array[0..512] of Char;
begin
UXTheme.GetCurrentThemeName(@ThemeName, SizeOf(ThemeName), @ThemeColorScheme, SizeOf(ThemeColorScheme), @ThemeSizeName, SizeOf(ThemeSizeName));
UXTheme.GetThemeDocumentationProperty(@ThemeName, SZ_THDOCPROP_CANONICALNAME, @PropertyName, SizeOf(PropertyName));
end;
请仔细阅读 GetThemeDocumentationProperty
- 此函数采用一个参数,负责 OS 主题的 属性 将是 return。根据 docs.microsoft
,上面代码中的标志 SZ_THDOCPROP_CANONICALNAME
将为
return 字符串 属性
Retrieves the name of the theme.
这样您就可以查看当前正在使用的主题。
但是您仍然可以为自己的应用程序禁用主题。
运行 程序是否有关于正在使用哪个 Win10 主题的任何信息?
我主要是想获得更多调试信息,因为我有一个用户报告了 "scrambled GUI"。
有什么方法可以从 运行 程序中终止主题或强制使用默认主题?
如果我正确理解您的问题,我会建议您使用 SetWindowTheme。
您应该查看上面 link 提供的信息,看看 docs.microsoft
(以前的 msdn
)在 Remark
部分告诉我们什么:
When pszSubAppName and pszSubIdList are NULL, the theme manager removes the previously applied associations. You can prevent visual styles from being applied to a specified window by specifying an empty string, (L" "), which does not match any section entries.
因此,考虑到这一点,您可以轻松地限制任何 window 的主题,这些 Handle
通过调用 SetWindowTheme
并将两个参数设置为“”大括号之间应该有空格”。
顺便说一句,我强烈不建议从您的应用程序中删除整个 OS 的主题。就个人而言,我会删除任何具有这种有用功能的软件。
重要补充!
过了一段时间我又看了你的问题,我可以回答你问题的第一部分。
您可以通过 UXTheme
单元获取主题信息。
主要你必须使用这两个功能:
下面是一些演示如何执行此操作的代码。
uses
..., UXTheme;
var
ThemeName: Array[0..512] of Char;
ThemeColorScheme: Array[0..512] of Char;
ThemeSizeName: Array[0..512] of Char;
PropertyName: Array[0..512] of Char;
begin
UXTheme.GetCurrentThemeName(@ThemeName, SizeOf(ThemeName), @ThemeColorScheme, SizeOf(ThemeColorScheme), @ThemeSizeName, SizeOf(ThemeSizeName));
UXTheme.GetThemeDocumentationProperty(@ThemeName, SZ_THDOCPROP_CANONICALNAME, @PropertyName, SizeOf(PropertyName));
end;
请仔细阅读 GetThemeDocumentationProperty
- 此函数采用一个参数,负责 OS 主题的 属性 将是 return。根据 docs.microsoft
,上面代码中的标志 SZ_THDOCPROP_CANONICALNAME
将为
Retrieves the name of the theme.
这样您就可以查看当前正在使用的主题。
但是您仍然可以为自己的应用程序禁用主题。