C# C控制台获取Windows 10强调色

C# C控制台获取Windows 10强调色,c#,windows-10,console-application,.net-core-2.0,C#,Windows 10,Console Application,.net Core 2.0,在.Net Core 2.X中是否有方法在控制台应用程序中读取选定的Windows 10强调色 我找到的大多数解决方案都是UWP或WPF应用程序 我也告诉你我的意思是哪种颜色,这是它的图片: HKEY\U CURRENT\U USER\Software\Microsoft\Windows\DWM \-存储所有装饰颜色。因此,如果应用程序是以HKEY_CURRENT_用户的权限启动的,您可以阅读或更改目录中的AccentColor属性和其他属性,或者自行更改十六进制表示法的颜色代码 要访问wind

在.Net Core 2.X中是否有方法在控制台应用程序中读取选定的Windows 10强调色

我找到的大多数解决方案都是UWP或WPF应用程序

我也告诉你我的意思是哪种颜色,这是它的图片:

HKEY\U CURRENT\U USER\Software\Microsoft\Windows\DWM \-存储所有装饰颜色。因此,如果应用程序是以HKEY_CURRENT_用户的权限启动的,您可以阅读或更改目录中的AccentColor属性和其他属性,或者自行更改十六进制表示法的颜色代码

要访问windows注册表,您需要安装软件包:

以下是有关软件包的信息:

颜色值以ABGR顺序存储为注册表DWORD 32位整数值,而不是ARGB或RGBA顺序


HKEY\U CURRENT\U USER\Software\Microsoft\Windows\DWM \-存储所有装饰颜色。因此,如果应用程序是以HKEY_CURRENT_用户的权限启动的,您可以阅读或更改目录中的AccentColor属性和其他属性,或者自行更改十六进制表示法的颜色代码

要访问windows注册表,您需要安装软件包:

以下是有关软件包的信息:

颜色值以ABGR顺序存储为注册表DWORD 32位整数值,而不是ARGB或RGBA顺序


从.NET Core 3.0开始,还可以借助软件包从非UWP应用程序调用UWP API

因此,我们可以使用UWP API通过以下方式从.NET Core控制台应用程序获取重音颜色:

var uiSettings = new UISettings();
var accentColor = uiSettings.GetColorValue(UIColorType.Accent);
返回的颜色类型为Windows.UI.color,但可以轻松转换为例如System.Drawing.color


从.NET Core 3.0开始,还可以借助软件包从非UWP应用程序调用UWP API

因此,我们可以使用UWP API通过以下方式从.NET Core控制台应用程序获取重音颜色:

var uiSettings = new UISettings();
var accentColor = uiSettings.GetColorValue(UIColorType.Accent);
返回的颜色类型为Windows.UI.color,但可以轻松转换为例如System.Drawing.color


NET核心是跨平台的。Linux或Mac上有强调色吗?我知道,但我没有可能改变框架。所以问题更多:有没有可能得到它。如果可能的话,我怎样才能得到它?在.NET框架中是不可能的,所以我很难相信它在.NET核心中是可用的。一个类似的问题有一个与Win8相关的答案,如果您可以使用.NET Framework,这个答案可能会让您接近:.NET Core是跨平台的。Linux或Mac上有强调色吗?我知道,但我没有可能改变框架。所以问题更多:有没有可能得到它。如果可能的话,我怎样才能得到它?在.NET框架中是不可能的,所以我很难相信它在.NET核心中是可用的。一个类似的问题有一个与Win8相关的答案,如果你能使用.NET Framework,这个答案可能会让你接近:这个答案很好,是一个开始寻找的好地方,但如果有一个MCVE,它会更好。第一个回答很好,Okamyra。欢迎使用堆栈溢出!:@詹姆斯怀特:现在怎么样?相当不错,但足够结实。快速:如果启用了从我的背景中自动选择强调色,这将无法获得正确的颜色。这个答案很好,是开始寻找的好地方,但使用MCVE会更好。第一个回答很好,Okamyra。欢迎使用堆栈溢出!:@詹姆斯怀特:现在怎么样?相当不错,但足够结实。快速:如果启用了从我的背景中自动选择强调色,则无法获得正确的颜色。+1。这应该是可以接受的答案,因为它不依赖于未记录的函数,也不干扰注册表。+1。这应该是可以接受的答案,因为它不依赖于未记录的函数,也不会弄乱注册表。
Color.FromArgb(accentColor.A, accentColor.R, accentColor.G, accentColor.B);