Obtener tema de Windows?
-
11-10-2019 - |
Pregunta
Realmente tengo que saber qué tema de Windows mi usuario está utilizando.
Más precisamente, clásico, XP, Basic o Aero. (Tema básico como en Vista / 7 Windows Básico tema)
Ya sé cómo encontrar si es aerodinámico, pero ¿qué hay de los otros?
La respuesta puede estar en cualquier lenguaje .NET (C #, VB.NET o C ++).
Si usted realmente tiene que saber por qué en la Tierra I necesidad de conocer el tema a continuación, aquí van:
Tengo algunos botones flotantes sobre el título de un formulario y necesito cambiar su apariencia de acuerdo con el tema de las ventanas.
Hasta ahora he conseguido encontrar Aero / Classic.
Las capturas de pantalla de los resultados, después de resolver el problema:
Solución
Puede comprobar si los temas son activos llamando IsAppThemed / IsThemeActive y a continuación, comprobar para Aero llamando DwmIsCompositionEnabled . Muy bien puede haber otras maneras de hacer esto !!
editar
La lógica sería:
- ¿Puedo
IsAppThemed
importación yIsThemeActive
? Si no, entonces yo debía estar en la clásica de Windows (Windows 9x o Win2k). - ¿Qué significa el retorno
IsAppThemed and IsThemeActive
? Si es falso entonces debe estar en Windows clásico. - ¿Puedo? Si no, entonces debo ser XP temática.
- ¿Qué significa el retorno
DwmIsCompositionEnabled
? Si esto es cierto, entonces estoy Aero, de lo contrario estoy de Windows básico.
DwmIsCompositionEnabled
importación Otros consejos
Puede comprobar el registro para el tema actual en:
HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Temas
en cadena "CurrentTheme", que tiene la ruta al tema actual. a continuación se muestra el código para comprobar que en 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;
}