我正在尝试更改实体桌面背景颜色,我正在使用RegistryKey
这样做:
Dim CD As New ColorDialog
If CD.ShowDialog = DialogResult.OK Then
Dim RK As RegistryKey = Registry.CurrentUser.OpenSubKey("Control Panel\Colors", True)
RK.SetValue("Background", CD.Color.R & " " & CD.Color.G & " " & CD.Color.B)
End If
我见过this question,但在我的情况下没有用。
上面的代码是有效的,因为注册表编辑器中的值正在改变,但背景颜色不是,如果我从控制面板编辑颜色,它将在注册表编辑器中更改相同的值,背景颜色将变化,有人为此解释过,还是有其他方法可以做到这一点?
答案 0 :(得分:1)
我终于让它工作了,只能通过编辑注册表项来完成,实际上你需要使用user32.dll
API这样做,你可以使用注册表项来获取由于Steve (↑),只有颜色的值,但不能设置它。
这对我有用:
首先> 声明此功能以使用API:
Private Declare Function SetSysColors Lib "user32.dll" (ByVal one As Integer, ByRef element As Integer, ByRef color As Integer) As Boolean
秒> 使用此功能调用该函数并更改颜色:
Dim CD As New ColorDialog
If CD.ShowDialog = DialogResult.OK Then
Dim BackgroundColor As Integer = ColorTranslator.ToWin32(CD.Color)
SetSysColors(1, 1, BackgroundColor)
End If
希望对某人有用:)