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