Если вам нужно изменить отдельные параметры внешнего вида (например, цвета окон), вы можете изменить соответствующие значения реестра в ключах 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 перешел в другое окно. Кроме того, заголовок диалогового окна «Свойства экрана» зависит от локали.
Другой вариант - использовать Theme.Manager
API, предоставляемый библиотекой themeui.dll, начиная с Windows XP SP1, но, похоже, он не работает на XP SP2. В любом случае, вы можете найти образец кода здесь .