如何获取当前的Windows主题名称?

时间:2009-02-13 06:23:56

标签: c#

我试图在C#中获取当前的Windows主题名称,但事实证明它比预期的要强一些。我有来自MSDN的代码示例:

public void Test()
{
    StringBuilder themeFileName = new StringBuilder(0x200);
    GetCurrentThemeName(themeFileName, themeFileName.Capacity, null, 0, null, 0);
    string fileName = Path.GetFileName(VisualStyleInformation.ThemeFilename);
    if (string.Equals("aero.msstyles", fileName, StringComparison.OrdinalIgnoreCase))
    {
        // user is using aero theme
    }
}

[DllImport("uxtheme.dll", CharSet = CharSet.Auto)]
public static extern int GetCurrentThemeName(StringBuilder pszThemeFileName, int   
    dwMaxNameChars, StringBuilder pszColorBuff, int dwMaxColorChars,
    StringBuilder pszSizeBuff, int cchMaxSizeChars);

GetCurrentTheme()不会修改StringBuilder。我也试过看 System.Windows.Forms.VisualStyles.VisualStyleInformation类,但它充满了空值。有人知道怎么做吗?我必须遗漏一些简单的东西,但我还没有找到任何有用的东西。

2 个答案:

答案 0 :(得分:3)

That article on CodeProject描述了如何获取“当前视觉样式信息”(在文章中搜索该字符串)。

它包含示例代码如何执行此操作。

答案 1 :(得分:-1)

您没有通过引用传递字符串构建器。