個々の外観オプション(ウィンドウの色など)を変更する必要がある場合は、HKEY_CURRENT_USER\Control Panel\Appearance
およびHKEY_CURRENT_USER\Control Panel\Colors
キーの下の適切なレジストリ値を変更できます。たとえば、次のコードはウィンドウの背景色をクリーム色に変更します。
Set oShell = CreateObject("WScript.Shell")
oShell.RegWrite path & "HKCU\Control Panel\Colors\Window", "255 251 240", "REG_SZ"
ただし、Windows はおそらく再起動後にのみレジストリの変更を適用することに注意してください。
準備が整った .theme ファイル
をロードする必要がある場合は、次のコードを使用できます。
Const Theme = "C:\MyTheme.theme"
Set oShellApp = CreateObject("Shell.Application")
oShellApp.ControlPanelItem "desk.cpl desk,@Themes /Action:OpenTheme /file:""" & Theme & """"
ただし、sascha が指摘したように、これは指定されたテーマが選択された [画面のプロパティ] ダイアログのみを表示します。ユーザーが [OK] をクリックするか、Enter キーを押す必要があります。WshShell.SendKeys
次のメソッドを使用して、スクリプト コードからキーの押下をシミュレートすることができます。
Set oShell = CreateObject("WScript.Shell")
' Wait until the Display Properties dialog is opened
While Not oShell.AppActivate("Display Properties")
WScript.Sleep 500
Wend
' Send the Enter key to close the dialog and apply the theme
Do
oShell.SendKeys "~"
WScript.Sleep 500
Loop While oShell.AppActivate "Display Properties"
しかし、このアプローチは信頼できません。ユーザーが別の場所をクリックして、Enter キーを押すと別のウィンドウに移動する可能性があるからです。また、[表示プロパティ] ダイアログのキャプションはロケールに依存します。
Windows XP SP1 以降では、themeui.dll ライブラリによって提供される APIを使用することもできますがTheme.Manager
、XP SP2 では機能しないようです。とにかく、ここでサンプルコードを見つけることができます。