有人知道如何在C#中使用VSPackage以編程方式獲取顏色方案?從VSPackage獲取Visual Studio顏色方案
我知道我可以使用VS2011的IVsUIShell5.GetThemedColor
,但我不知道如何從VS2005,VS2008或VS2010獲取它。
在此先感謝。
有人知道如何在C#中使用VSPackage以編程方式獲取顏色方案?從VSPackage獲取Visual Studio顏色方案
我知道我可以使用VS2011的IVsUIShell5.GetThemedColor
,但我不知道如何從VS2005,VS2008或VS2010獲取它。
在此先感謝。
有兩種方法,使用IVSShell和IVSShell2:
private List<Color> GetColorList1()
{
IVsUIShell uiShell = (IVsUIShell)this.GetService(typeof(IVsUIShell));
List<Color> result = new List<Color>();
foreach (VSSYSCOLOR vsSysColor in Enum.GetValues(typeof(VSSYSCOLOR)))
{
uint win32Color;
uiShell.GetVSSysColor(vsSysColor, out win32Color);
Color color = ColorTranslator.FromWin32((int)win32Color);
result.Add(color);
}
return result;
}
private List<Color> GetColorList2()
{
IVsUIShell2 uiShell = (IVsUIShell2)this.GetService(typeof(IVsUIShell2));
List<Color> result = new List<Color>();
foreach (__VSSYSCOLOREX vsSysColor in Enum.GetValues(typeof(__VSSYSCOLOREX)))
{
uint win32Color;
uiShell.GetVSSysColorEx((int)vsSysColor, out win32Color);
Color color = ColorTranslator.FromWin32((int)win32Color);
result.Add(color);
}
return result;
}
我意識到這實際上是一個答案。
要檢索什麼不被IVsUIShell4及以下
我想這添加到我的knowlege的Visual Studio 2005 - 2010年甚至不必每說主題曝光。至少Visual Studio 2012改變了這個機制。你可以加載設置文件,但它們不是每個說的主題。
Microsoft.VisualStudio.Shell.Interop甚至沒有require枚舉。
我想,如果沒有siutable API在那裏,你總是可以做到這一點直接在註冊表中。
你也可能wnat看看這些鏈接:How to: Access the Built-in Fonts and Color Scheme
我找到了一個解決方案:
[Guid("0D915B59-2ED7-472A-9DE8-9161737EA1C5")]
interface SVsColorThemeService
{
}
則:
dynamic colorThemeService = _serviceProvider.GetService(typeof(SVsColorThemeService));
Guid id = colorThemeService.CurrentTheme.ThemeId;
// should be one of the Microsoft.VisualStudio.Shell.KnownColorThemes
是的,但我知道,你可以改變VS2010主題,所以主題必須在任何地方,註冊表配置文件?這是我的問題。 –