在VB

2017-09-11 29 views
0

我試圖改變固體桌面背景顏色,和我使用的是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://stackoverflow.com/questions/7309943/c-set-desktop-壁紙到純色) – Steve

+0

哦,所以我必須給我們'user32.dll' API,好的,謝謝! –

+1

@Steve,感謝你,我明白了,並且我對此做出了回答。 –

回答

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 

希望對某人有用: )