在VB
问题描述:
我试图改变固体桌面背景颜色,和我使用的是RegistryKey
要做到这一点,像这样改变固体桌面背景颜色:在VB
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,但它对我的情况没有帮助。
上面的代码工作是因为注册表编辑器中的值正在改变,但背景颜色不是,如果我从控制面板编辑颜色,它会改变注册表编辑器中的相同值和背景颜色会改变,任何人都有解释,或有任何其他方式来做到这一点?
答
我终于得到它的工作,它不能通过只编辑注册表项,事实上你需要使用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
希望对某人有用: )
这个问题谈到读取背景颜色,改变它有点复杂:[设置桌面墙纸为纯色](https://*.com/questions/7309943/c-set-desktop-壁纸到纯色) – Steve
哦,所以我必须给我们'user32.dll' API,好的,谢谢! –
@Steve,感谢你,我明白了,并且我对此做出了回答。 –