问题标签 [windows-themes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
295 浏览

c# - 将视觉样式应用于从 C# .net 程序调用的 MFC 对话框

我有一个 .NET C# 程序,它引用了一些 C++/CLI dll,而这些 dll 又可以启动一些旧版 MFC 表单/对话框。但是,当这些对话框启动时,它们不会应用当前的 Windows 主题(即视觉样式)启动。它们以旧的 Windows 98 样式打开。

如果我们使用 Application Exe 项目的 stdafx.h 中包含的pragma 注释通过原始 C++/CLI 项目启动,这些对话框确实会以视觉样式启动。

我已经尝试了引用的 Microsoft 文章中关于将视觉样式应用于 C++ 项目的一些建议。但是它们都不起作用,因为我假设本文针对的是纯 C++ 解决方案,而不是引用旧 MFC 对话框的混合 C# 解决方案。

tl;dr 可以从 C# 程序启动 MFC 对话框,但对话框没有视觉样式。

0 投票
2 回答
1262 浏览

c++ - 如何确定 Windows 10 中是否启用了高对比度主题?

在 Windows 10 中,高对比度主题是唯一在边框方面与默认 Windows 10 主题不同的主题。

为此,我想检测用户是否处于 Windows 10 中的高对比度主题中。

0 投票
1 回答
64 浏览

windows-7 - 无法使用自定义 Windows 主题

无法安装windows主题。当我使用 .theme 文件时,Windows 会制作经典主题。我尝试使用通用主题修补程序安装补丁。但这无济于事。

0 投票
1 回答
208 浏览

embedded-resource - Windows 主题文件 (aero.msstyles) 是否可以在其资源中加载间谍软件,特别是在 UI 脚本中

短版:见主题

详细版本:

我想为 Windows 使用特定的 3rd 方主题。我已经在使用我自己编译的开源解决方案来禁用 Window 对主题的限制。

过去,在使用 DLL 附带的 3rd 方主题相关模组时(例如用于登录 ui 的 authui.dll,或用于修改系统图标的 imageres.dll),我通过简单地复制未知 DLL 的主题相关资源来避免使用未知 DLL (例如位图、图标组或 UI 脚本)到它的原始 MS Dll 对应物。我称之为资源嫁接,其中资源被更改,但 DLL 或 exe 的可执行元素被单独保留。

回到我想安装的主题,我使用 sha256 哈希确定只有 aero.msstyles 也可以被资源黑客修改。所以我做了和平时一样的事情,把第三方主题的资源转移到了Window自己的aero.msstyles中。问题是我遇到了一种我无法阅读或知道其内容的资源。它被称为变体。从在 VM 中进行的一些实验来看,它似乎是资源黑客无法反编译的某种二进制 UI 脚本。我通常希望能够阅读我传输的任何 UI 脚本,但我无法使用这个。

这会构成任何真正的安全风险吗?UI 脚本可以通过某种漏洞利用来加载吗?对我来说似乎不太可能,因为主题文件(msstyle)的功能是协调系统 UI 的外观,但我对整个主题系统的内部工作知之甚少,无法确定。在我将主题从虚拟机中取出之前,我想我会得到一些其他的观点。

0 投票
0 回答
77 浏览

wpf - Windows 7 上生成的 Button 控件模板中的错误

我有两台电脑,一台在家里,一台在工作。两者都使用相同的 VS2017 Professional 版本 15.8.4,但操作系统不同:一个使用 Windows 10,另一个使用 Windows 7。在两者上,我创建了一个包含按钮的新 WPF-Project (.Net Framework 4.5)。如果我让通过Properties > Template > Convert to Local Value为特定按钮生成模板,则每台机器上的 ControlTemplates 看起来都不同。

Windows 10 模板的 XAML:

Windows 7 模板的 XAML:

在 Windows 7 上,它还添加了一个新的命名空间:

问题是,在 Windows 7 上生成的代码有问题:

如何防止在 Windows 7 上生成错误模板?

0 投票
0 回答
113 浏览

windows - 为什么取消选中“启用运行时主题”会禁用按 Ctrl + A 的全选?

我创建了一个新的 VCL 应用程序并TEdit在表单上放置了一个控件。

在运行时,我可以使用Ctrl+A键盘快捷键来选择TEdit.

从项目选项中关闭“启用运行时主题”选项后,我注意到Ctrl+A键盘快捷键停止工作。

启用运行时主题

为什么会这样?

0 投票
0 回答
224 浏览

c# - 如何将 treeView 组件的主题更改为文件夹和文件图标(windows 主题)

我正在使用winForm。我正在尝试将 treeView 组件的主题更改为 windows 主题,我看到@David Heffernan 回答了此类问题:如何让 Windows 原生查找 .NET TreeView? 但我不完全理解。

我尝试了他的答案,它成功了一半:加号/减号更改为“三角形”节点句柄,蓝色常规方块更改为“气泡”选择方块,但它不会将文件夹/文件更改为 windows\explorer 图标。我需要在他的代码中添加什么才能使图标出现?

所需格式

0 投票
1 回答
565 浏览

winapi - Windows 10 主题更改的通知/订阅方法

正如 yolu 可能已经注意到的那样,MS 在 Windows 10 中引入了一种现代的“主题”,涉及开始菜单和任务栏等基本操作系统元素。对于较新的版本,您可以选择“浅色”主题作为默认黑色主题的替代品。

我想知道是否有一个 API 或钩子可以优雅地(更重要的是)有效地实时检查主题更改(在 MS 文档中没有找到任何关于此的内容,但这些宝石通常很隐蔽,恕我直言)。

具体问题:当您有一个带有系统托盘图标的桌面应用程序时,您很有可能将其设计为明亮的。几乎所有现代 Windows 图标都具有这种风格(简单和白色,在黑色任务栏上产生良好的可读性)。现在您可以为浅色主题提供更暗风格的不同版本,但如何注意何时应用它呢?

我知道我现在正在使用的 HCU (Software/Microsoft/Windows/CurrentVersion/Themes/Personalize) 下的注册表项。但是,每 x 毫秒盲目检查一次更改似乎很尴尬。

如果没有这样的东西可用,我也很高兴听到一些关于更有效地实施这种检查的想法。

0 投票
1 回答
105 浏览

netbeans - Netbeans 是否支持 Windows 深色主题?

我刚刚将 Windows 更新到 1909 版,并且正在使用 Dark 主题。现在,我知道 Netbeans 有一个名为“Darcula”的深色主题,但我想使用 Microsoft 深色主题。Netbeans 支持这个主题吗?

0 投票
0 回答
57 浏览

java - How to reinit Windows Themes in Java Swing application running via RDP if Visual styles was disabled?

I have a Swing application that is running on RDP sandbox. The RDP connection has option 'Visual styles' which is responsible for displaying or ignoring Windows themes. First time I connect with the option checked and run my Swing application. Then I disconnect and reconnect again with unchecked 'Visual styles' option. And exception immediately occurs:

As I figured out com.sun.java.swing.plaf.windows.XPStyle#getXP should return null if Windows themes are disabled but it doesn't.

The ThemeReader class does initialize UIDefaults successfully with native method sun.awt.windows.ThemeReader#initThemes but when it tries to get the theme it returns 0 because themes are disabled now.

So I think sun.awt.windows.ThemeReader#initThemes works incorrect in this case or may be there is any way to reset it hard?