Ottenere tema di Windows?
-
11-10-2019 - |
Domanda
Devo davvero sapere quale tema di Windows mio utente sta usando.
Più precisamente, Classic, XP, Basic o Aero. (Tema di base come in Vista / 7 di Windows di base tema)
So già come trovare se è aerodinamico, ma come gli altri?
La risposta può essere in qualsiasi lingua NET (C #, VB.NET e C ++).
Se avete davvero sapere perché sulla Terra ho bisogno di sapere il tema, allora qui si va:
Ho alcuni pulsanti che galleggia sopra la didascalia di una forma e ho bisogno di cambiare il loro aspetto a seconda del tema di Windows.
Finora sono riuscito a trovare Aero / Classic.
Le schermate del risultato, dopo aver risolto il problema:
Soluzione
È possibile controllare se i temi sono attivi chiamando IsAppThemed / IsThemeActive quindi verificare la presenza di Aero chiamando DwmIsCompositionEnabled . Ci possono essere altri modi di fare questo !!
Modifica
La logica sarebbe:
- Posso importare
IsAppThemed
eIsThemeActive
? Se no allora devo essere in Windows Classic (Win9x o Win2k). - Che cosa significa il ritorno
IsAppThemed and IsThemeActive
? Se falso, allora devo essere in classica di Windows. - Posso importare
DwmIsCompositionEnabled
? no se poi devo essere XP a tema. - Che cosa significa il ritorno
DwmIsCompositionEnabled
? Se fosse vero allora io sono Aero, altrimenti io sono di Windows di base.
Altri suggerimenti
È possibile controllare il registro per il tema corrente:
HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Themes
sotto String "CurrentTheme", che ha il percorso del tema corrente. al di sotto è il codice per il controllo in 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;
}