Obtenez thème Windows?
-
11-10-2019 - |
Question
Je dois vraiment savoir quel thème Windows mon utilisateur utilise.
Plus précisément, classique, XP, Basic ou Aero. (Thème de base comme dans Vista / 7 thème Windows de base)
Je sais déjà comment trouver si elle est aéro, mais comment les autres?
La réponse peut être dans une langue .NET (C #, VB.NET ou C ++).
Si vous avez vraiment savoir pourquoi sur Terre je besoin de connaître le thème puis ici vous allez:
J'ai quelques boutons flottant sur la légende d'une forme et je dois changer leur apparence en fonction du thème de fenêtres.
Jusqu'à présent, j'ai réussi à trouver Aero / Classic.
Captures d'écran du résultat, après avoir résolu la question:
La solution
Vous pouvez vérifier si les thèmes sont actifs en appelant IsAppThemed / IsThemeActive puis vérifier Aero en appelant DwmIsCompositionEnabled . Il peut y avoir d'autres façons de le faire !!
EDIT
La logique serait:
- Puis-je importer
IsAppThemed
etIsThemeActive
? Si non, alors je dois être dans Windows classique (Win9x ou Win2K). - Qu'est-ce que le retour de
IsAppThemed and IsThemeActive
? Si elle est fausse alors je dois être dans Windows classique. - Puis-je
DwmIsCompositionEnabled
à l'importation? Si non, alors je dois être XP à thème. - Qu'est-ce que le retour de
DwmIsCompositionEnabled
? Si cela est vrai alors je suis Aero, sinon je suis sous Windows de base.
Autres conseils
Vous pouvez consulter le registre pour le thème en cours à:
HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Thèmes
sous String « CurrentTheme » qui a le chemin du thème actuel. ci-dessous est le code pour le contrôle 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;
}