获取Windows主题?

时间:2010-12-18 18:30:58

标签: .net themes windows-themes

我必须真知道用户正在使用哪个Windows主题 更确切地说,Classic,XP,Basic或Aero。 (基本主题如Vista / 7 Windows Basic主题)
我已经知道如何找到它是空气动力学,但其他人呢?


答案可以是任何.NET语言(C#,VB.NET或C ++)。


如果你真的必须知道为什么在地球上我需要知道这个主题,那么你去吧:
我在表单的标题上有一些浮动按钮,我需要根据windows主题更改其外观 到目前为止,我已经找到了Aero / Classic。


解决问题后的结果屏幕截图: Minimize to tray button

2 个答案:

答案 0 :(得分:4)

您可以在以下位置检查注册表中的当前主题:

HKEY_CURRENT_USER \软件\微软\的Windows \ CurrentVersion \主题

字符串“CurrentTheme”下的

,其中包含当前主题的路径。 下面是用C#检查它的代码。

using Microsoft.Win32;

public string GetTheme()
{
  string RegistryKey = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes";
  string theme;
  theme = (string) Registry.GetValue(RegistryKey, "CurrentTheme", string.Empty);
  theme = theme.Split('\\').Last().Split('.').First().ToString();
  return theme;
}

答案 1 :(得分:3)

您可以致电IsAppThemed / IsThemeActive查看主题是否有效,然后致电DwmIsCompositionEnabled查看Aero。可能还有其他方法可以做到这一点!!

修改

逻辑是:

  1. 我可以导入IsAppThemedIsThemeActive吗?如果不是,那么我必须使用Windows Classic(Win9x或Win2k)。
  2. IsAppThemed and IsThemeActive返回什么?如果为false,那么我必须使用Windows Classic。
  3. 我可以导入DwmIsCompositionEnabled吗?如果不,那么我必须是XP主题。
  4. DwmIsCompositionEnabled返回什么?如果是,那么我是Aero,否则我是Windows Basic。