首先我在网上找了很多的方法,主要还是读取注册表计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\DWM中的AccentColor这个值。
如果是手动选择的颜色这个值也是没有问题的,但是如果主题颜色通过背景自动选择的主题色这个值就不准确了。
后来我找了半天,最后终于找到了一个非常完美的注册表值计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\History\Colors中的ColorHistory0这个值,完美解决。
Java代码:
@Test
public void getTheme() {
//long color = Advapi32Util.registryGetIntValue(WinReg.HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Windows\\DWM", "AccentColor");
long color = Advapi32Util.registryGetIntValue(
WinReg.HKEY_CURRENT_USER,
"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\History\\Colors",
"ColorHistory0"
);
int a = (int) ((color >> 24) & 0xFF);
int b = (int) ((color >> 16) & 0xFF);
int c = (int) ((color >> 8)