2009-02-13 79 views
0

我想在C#中獲取當前的Windows主題名稱,但事實證明它比預期的要困難得多。我有一個來自MSDN的代碼示例:如何獲取當前的Windows主題名稱?

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類的
,但它充滿了空值。有人知道怎麼做嗎?我必須錯過一些簡單的東西,但我還沒有發現任何可行的東西。

回答

3

That article on CodeProject描述如何獲得「當前視覺樣式信息」(在文章中搜索該字符串)。

它包含示例代碼如何做到這一點。

+0

謝謝,我沒有看到那一個。閱讀... – 2009-02-13 06:52:12

-1

您不通過引用傳遞字符串生成器。

+0

那麼,參考值是通過值。我不認爲這個函數會改變引用的對象。我會嘗試,當我有機會,謝謝。 – 2009-03-15 04:41:12