delphi - 运行程序使用的Win10 Theme
问题描述
正在运行的程序是否有任何关于正在使用哪个 Win10 主题的信息?
我主要是为了获得更多的调试信息,因为我有一个用户报告了“加扰的 GUI”。
有没有办法从正在运行的程序中杀死主题或强制使用默认主题?
解决方案
如果我正确理解了您的问题,我会建议您使用SetWindowTheme。
您应该查看上面链接提供的信息,以查看docs.microsoft
(前msdn
)在部分中告诉我们的Remark
内容:
当 pszSubAppName 和 pszSubIdList 为 NULL 时,主题管理器会删除先前应用的关联。您可以通过指定一个不匹配任何部分条目的空字符串 (L" ") 来防止将视觉样式应用于指定的窗口。
因此,考虑到这一点,您可以通过将两个参数设置为“大括号之间应该有空格Handle
”来轻松地限制任何已知窗口的主题化。 SetWindowTheme
顺便说一句,我不强烈建议从您的应用程序中删除整个操作系统的主题。就个人而言,我删除了任何具有如此有用功能的软件。
重要的附录!
一段时间后,我再次阅读了您的问题,我可以回答您问题的第一部分。
您可以通过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 主题的哪些属性。根据docs.microsoft
,上面代码中的标志SZ_THDOCPROP_CANONICALNAME
将返回字符串属性
检索主题的名称。
因此,您将能够检查当前正在使用的主题。
但是您仍然可以为您自己的应用程序禁用主题。
推荐阅读
- python - Django连接到mysql
- azure - Azure ServiceBus ReceiveDeferredMessageAsync() 失败
- python - 带有 docker 和 postgresql 的 DJANGO
- typescript - 是否可以在对象解构表达式中使用类型断言/强制转换?
- python - Tensorflow 模块的问题
- ruby-on-rails - 未初始化的常量 ActionController::RedirectBackError 您的意思是?ActionController::RenderError
- assembly - MIPS CPU 如何掉电?
- python - Errno 98 自动脚本在重新启动时启动时地址已在使用中
- python - 在 Jupyter Notebook 上导入 Keras
- node.js - Docker Compose 导致 Error: listen EADDRINUSE: address already in use :::3003