在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,但它对我的情况没有帮助。

上面的代码工作是因为注册表编辑器中的值正在改变,但背景颜色不是,如果我从控制面板编辑颜色,它会改变注册表编辑器中的相同值和背景颜色会改变,任何人都有解释,或有任何其他方式来做到这一点?

+1

这个问题谈到读取背景颜色,改变它有点复杂:[设置桌面墙纸为纯色](https://*.com/questions/7309943/c-set-desktop-壁纸到纯色) – Steve

+0

哦,所以我必须给我们'user32.dll' API,好的,谢谢! –

+1

@Steve,感谢你,我明白了,并且我对此做出了回答。 –

我终于得到它的工作,它不能通过只编辑注册表项,事实上你需要使用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 

希望对某人有用: )