Вопрос

Я должен действительно знать, какую тему Windows использует мой пользователь.
Точнее, классический, XP, базовый или аэро. (Основная тема, как в Vista/7 Windows Basic Theme)
Я уже знаю, как найти, если это аэро, но как насчет других?


Ответ может быть на любом языке .NET (C#, VB.NET или C ++).


Если вам действительно нужно знать, почему мне нужно знать тему, то вы идете:
У меня есть несколько плавающих кнопок над подписью формы, и мне нужно изменить их внешний вид в соответствии с темой Windows.
До сих пор мне удалось найти Aero/Classic.


Снимки экрана результата после решения проблемы:Minimize to tray button

Это было полезно?

Решение

Вы можете проверить, активны ли темы, позвонив Isappthemed/Ithemeactive а затем проверьте на Aero, позвонив Dwmiscompositionenabled. Анкет Вполне могут быть и другие способы сделать это !!

РЕДАКТИРОВАТЬ

Логика будет:

  1. Могу я импортировать IsAppThemed а также IsThemeActive? Если нет, то я должен быть в Windows Classic (Win9x или Win2k).
  2. Что значит IsAppThemed and IsThemeActive возвращаться? Если ложь, то я должен быть в Windows Classic.
  3. Могу я импортировать DwmIsCompositionEnabled? Если нет, то я должен быть тематическим XP.
  4. Что значит DwmIsCompositionEnabled возвращаться? Если это правда, то я аэру, в противном случае я базовый Windows.

Другие советы

Вы можете проверить реестр на текущую тему по адресу:

Hkey_current_user Software Microsoft Windows CurrentVersion Themes

Под строкой «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