Получить тему Windows?
Я должен действительно знать, какую тему Windows использует мой пользователь.
Точнее, Classic, XP, Basic или Aero. (Основная тема, как в Vista/7 Windows Basic)
Я уже знаю, как найти, если это аэро, но как насчет других?
Ответ может быть на любом языке.NET (C#, VB.NET или C++).
Если вы действительно должны знать, почему на Земле мне нужно знать тему, то здесь вы идете:
У меня есть несколько плавающих кнопок над заголовком формы, и мне нужно изменить их внешний вид в соответствии с темой Windows.
Пока мне удалось найти Aero/Classic.
Снимки экрана результата после решения проблемы:
2 ответа
Вы можете проверить, активны ли темы, вызвав IsAppThemed/ IsThemeActive, а затем проверить Aero, вызвав DwmIsCompositionEnabled. Там могут быть другие способы сделать это!
РЕДАКТИРОВАТЬ
Логика будет такой:
- Могу ли я импортировать
IsAppThemed
а такжеIsThemeActive
? Если нет, то я должен быть в Windows Classic (Win9x или Win2k). - Что значит
IsAppThemed and IsThemeActive
вернуть? Если false, то я должен быть в Windows Classic. - Могу ли я импортировать
DwmIsCompositionEnabled
? Если нет, то я должен быть XP-темой. - Что значит
DwmIsCompositionEnabled
вернуть? Если это правда, то я Aero, в противном случае я Windows Basic.
Вы можете проверить реестр для текущей темы по адресу:
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;
}