4

ユーザーが使用している Windows テーマを正確に把握する必要があります。
より正確には、Classic、XP、Basic、または Aero です。(Vista/7 Windows Basic テーマのような Basic テーマ)
Aero かどうかを調べる方法は既に知っていますが、他のテーマはどうですか?


答えは、任意の .NET 言語 (C#、VB.NET、または C++) である可能性があります。


なぜ地球上でテーマを知る必要があるのか​​ を本当に知る必要がある場合は、ここに行きます.
フォームのキャプションの上にいくつかのフローティングボタンがあり、ウィンドウのテーマに応じてそれらの外観を変更する必要があります.
これまでのところ、Aero/Classic を見つけることができました。


問題を解決した後の結果のスクリーン ショット: トレイ ボタンに最小化

4

2 に答える 2

4

現在のテーマのレジストリは次の場所で確認できます。

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;
}
于 2010-12-19T04:47:22.593 に答える
3

IsAppThemed / IsThemeActiveを呼び出してテーマがアクティブかどうかを確認し、 DwmIsCompositionEnabledを呼び出して Aero を確認できます。これを行う他の方法があるかもしれません!!

編集

ロジックは次のようになります。

  1. IsAppThemedとをインポートできますIsThemeActiveか? そうでない場合は、Windows クラシック (Win9x または Win2k) を使用している必要があります。
  2. 何をIsAppThemed and IsThemeActive返しますか?false の場合、Windows クラシックにいる必要があります。
  3. インポートできますDwmIsCompositionEnabledか? そうでない場合は、XP をテーマにしている必要があります。
  4. 何をDwmIsCompositionEnabled返しますか?true の場合は Aero、それ以外の場合は Windows Basic です。
于 2010-12-18T18:52:01.790 に答える