获取 Windows 主题?
我必须真正知道我的用户正在使用哪个 Windows 主题。
更准确地说,是 Classic、XP、Basic 或 Aero。 (基本主题与 Vista/7 Windows 基本主题相同)
我已经知道如何找到它是否是空气动力的,但是其他的呢?
答案可以是任何 .NET 语言(C#、VB.NET 或 C++)。
如果您真的必须知道为什么我需要知道主题,那么您就可以:
我在表单标题上有一些浮动按钮,我需要根据 Windows 主题更改它们的外观。
到目前为止,我已经找到了 Aero/Classic。
解决问题后的结果屏幕截图:
I must really know which Windows theme my user is using.
More precisely, Classic, XP, Basic or Aero. (Basic theme as in Vista/7 Windows Basic theme)
I already know how to find if it's aero, but how about the others?
The answer can be in any .NET language (C#, VB.NET or C++).
If you really have to know why on Earth I need to know the theme then here you go:
I have some floating buttons over the caption of a form and I need to change their appearance according to the windows theme.
So far I've managed to find Aero/Classic.
Screen shots of the result, after solving the issue:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以在以下位置检查当前主题的注册表:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes,
位于字符串“CurrentTheme”下,其中包含当前主题的路径。
下面是在 C# 中检查它的代码。
You can check the registry for the current theme at:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes
under String "CurrentTheme" which has the path to the current theme.
below is the code for checking it in C#.
您可以通过调用 IsAppThemed/IsThemeActive 然后检查Aero 通过调用 DwmIsCompositionEnabled。很可能还有其他方法可以做到这一点!
编辑
逻辑是:
IsAppThemed
和IsThemeActive
吗?如果不是,那么我必须使用 Windows Classic(Win9x 或 Win2k)。IsAppThemed 和 IsThemeActive
返回什么?如果为 false,那么我一定使用的是 Windows Classic。DwmIsCompositionEnabled
吗?如果不是的话我一定是XP主题的。DwmIsCompositionEnabled
返回什么?如果属实,那么我是 Aero,否则我是 Windows Basic。You can check whether themes are active by calling IsAppThemed/IsThemeActive and then check for Aero by calling DwmIsCompositionEnabled. There may well be other ways of doing this!!
EDIT
The logic would be:
IsAppThemed
andIsThemeActive
? If no then I must be in Windows Classic (Win9x or Win2k).IsAppThemed and IsThemeActive
return? If false then I must be in Windows Classic.DwmIsCompositionEnabled
? If no then I must be XP themed.DwmIsCompositionEnabled
return? If true then I am Aero, otherwise I am Windows Basic.