Windows 7内置了几个主题,可以通过右键单击桌面并选择“个性化”来访问它们。在个性化下,有一个名为“Aero Themes”的部分,包含诸如“建筑”“自然”等主题。
我尝试使用uxtheme.dll的GetCurrentThemeName,但它实际上给出了样式名称:“C:\ Windows \ resources \ Themes \ Aero \ Aero.msstyles”,除非我的当前主题设置为Windows Basic,在这种情况下它返回一个空字符串。是否有一个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);
GetThemeDocumentationProperty()
似乎可以达到你想要的效果。 - In silico