Get Windows theme?

后端 未结 2 867
灰色年华
灰色年华 2020-12-10 19:06

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 h

相关标签:
2条回答
  • 2020-12-10 19:41

    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:

    1. Can I import IsAppThemed and IsThemeActive? If no then I must be in Windows Classic (Win9x or Win2k).
    2. What does IsAppThemed and IsThemeActive return? If false then I must be in Windows Classic.
    3. Can I import DwmIsCompositionEnabled? If no then I must be XP themed.
    4. What does DwmIsCompositionEnabled return? If true then I am Aero, otherwise I am Windows Basic.
    0 讨论(0)
  • 2020-12-10 19:52

    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#.

    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;
    }
    
    0 讨论(0)
提交回复
热议问题