如何获取Windows 7主题名称

Windows 7附带了几个内置主题。 可以通过右键单击桌面并选择“个性化”来访问它们。 在Personalize下,有一个名称为“航空主题”的部分,其中包含“建筑”,“自然”等主题。

我尝试使用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); 

看一下MSDN文档之后,看起来像GetThemeDocumentationProperty可能就是你要找的东西。

您将希望将它与主题文件(您在注册表中找到)一起使用,以及将SZ_THDOCPROP_DISPLAYNAME作为方法的第二个参数传递。

此外,这是一个具有p / invoke调用的c#方法包装器的站点: http : //www.java2s.com/Open-Source/CSharp/2.6.4-mono-.net-core/System.Windows。表格/系统/窗/表格/ VISUALSTYLES / UXTheme.cs.htm

希望有所帮助。