Windows 7にはいくつかのビルトインテーマが付属しています。デスクトップに右クリックし、「パーソナライズ」を選択するとアクセスできます。パーソナライズの下には、 "Architecture" "Nature"などのテーマを含むセクション名 "Aero Themes"があります。Windows 7のテーマ名を取得する方法
私はuxtheme.dllのGetCurrentThemeNameを使用してみましたが、それは実際にスタイル名を与えている: 「C:\ WINDOWS \資源エアロ\ Aero.msstyles \ \テーマ」私の現在のテーマが、その場合には、Windowsの基本に設定されていない限り、空の文字列を返します。 "Nature" "Architecture"などのテーマ名を実際に返すAPIがありますか?
[DllImport("uxtheme", ExactSpelling = true, CharSet = CharSet.Unicode)]
public extern static Int32 GetCurrentThemeName(StringBuilder stringThemeName,
int lengthThemeName, StringBuilder stringColorName, int lengthColorName,
StringBuilder stringSizeName, int lengthSizeName);
StringBuilder stringThemeName = new StringBuilder(260);
StringBuilder stringColorName = new StringBuilder(260);
StringBuilder stringSizeName = new StringBuilder(260);
Int32 s = GetCurrentThemeName(stringThemeName, 260,stringColorName, 260,stringSizeName, 260);
レジストリキー:HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Themesエントリが含まれています:テーマファイル名で作成された "CurrentTheme"役職。たとえば、Nature Themeの場合、値を取得します。「C:\ Windows \ resources \ Themes \ nature.theme」です。これは、解析して名前を取得するのに十分です。もちろん、テーマのファイル名がUIの実際のテーマ表示名と一致しない場合には問題はありますが、限られたシナリオではそのケースに当てはまることはありません。 – user577240
レジストリの周りを潜んでいるのは、一般的には良いアイデアではありません。 [Brian Dishawが言及したように](http://stackoverflow.com/questions/6631796/how-to-get-the-windows-7-theme-name/6632887#6632887)、['GetThemeDocumentationProperty()'](http ://msdn.microsoft.com/en-us/library/bb773402.aspx)は、あなたが望むことをするようです。 –
ありがとう。それでおしまい。 – user577240