我必须真的知道我的用户正在使用哪个窗口主题。
更准确地说,经典,XP,基本或Aero。 (vista/7 Windows基本主题中的基本主题)
我已经知道如何找到它是否是航空,但是其他人呢?


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


如果您真的必须知道为什么在地球上我需要知道主题,那么您就可以了:
我在表单的标题上有一些浮动按钮,我需要根据Windows主题更改它们的外观。
到目前为止,我设法找到了Aero/Classic。


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

有帮助吗?

解决方案

您可以通过致电检查主题是否处于活动状态 Isappthemed/等激素 然后通过打电话检查Aero DWMisCompositionEnabled. 。可能还有其他方法!

编辑

逻辑是:

  1. 我可以导入吗? IsAppThemedIsThemeActive?如果没有,那么我必须参加Windows Classic(Win9x或Win2k)。
  2. 有什么 IsAppThemed and IsThemeActive 返回?如果是错误的,那么我必须在Windows Classic中。
  3. 我可以导入吗? DwmIsCompositionEnabled?如果没有,我必须以XP为主题。
  4. 有什么 DwmIsCompositionEnabled 返回?如果是属实,那么我是Aero,否则我是Windows Basic。

其他提示

您可以在注册表中查看当前主题:

hkey_current_user Software Microsoft 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;
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top