Запланируйте изменение обоев Windows XP без дополнительных приложений

Идеально, я хотел бы смочь сделать это через пакетный файл или сценарий VB, таким образом, я могу запланировать его для выполнения в разное время дня (темные обои ночью по сравнению с легкими обоями в день).

Я знаю о многих приложениях, которые могли сделать это, но я предпочитаю сохранять только необходимые приложения, работающие в фоновом режиме.

5
задан 28.09.2014, 14:17

3 ответа

Можно использовать запланированные задачи наряду с этим VBScript, который я просто взломал вместе (это для использования нескольких обоев и переключения каждых нескольких минут, например):

Randomize
Set obshell = WScript.CreateObject("Wscript.Shell")
num = Int( ( 100 - 1 + 1 ) * Rnd + 1 )
CurrentDir = "C:\Wallpapers\day\"
wallpaper = CurrentDir & "Wallpaper" & num & ".bmp"
obshell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper",wallpaper
obshell.Run "%windir%\System32\RUNDLL32.EXE user32.dll,
UpdatePerUserSystemParameters",1,False
Set obshell = Nothing

Примечание: Обои должны быть битовыми массивами. Если Вы хотите избежать большего количества сценариев ко времени системы контроля периодически, можно использовать тот же сценарий в течение ночи, и день просто делают отдельную запланированную задачу и выполняют его в желаемое время в желаемом интервале. Сделайте 2 папки, один для дневных обоев и один для ночных обоев, поместите копию сценария в каждом. Необходимо будет измениться 100 в строке 3 к однако многим обоям находятся в каждом и переименовывают их к Wallpaper1, Wallpaper2, etc чтобы этот сценарий работал (или измените имя в сценарии). Также измените CurrentDir значение для каждого.

Если требуется только использовать 2 обоев (установите его для выполнения каждые 59 минут или так гарантировать, чтобы Вы не пропускали час):

Set obshell = WScript.CreateObject("Wscript.Shell")
CurrentHour = Hour(Now)
If CurrentHour = 8 Then
    wallpaper = "C:\Wallpapers\day.bmp"
ElseIf CurrentHour = 20 Then
    wallpaper = "C:\Wallpapers\night.bmp"
Else
    WScript.Quit(0)
End If
obshell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper",wallpaper
obshell.Run "%windir%\System32\RUNDLL32.EXE user32.dll,
UpdatePerUserSystemParameters",1,False
Set obshell = Nothing
6
ответ дан 07.12.2019, 17:03

Править: Ответ John's показывает Вам полный сценарий. Мои +1 переходят к нему. Это сообщение становится просто другой опцией, которую можно хотеть изучить.

Я немного ржав на пакетных командах, таким образом, я собираюсь дать Вам выделения:

%TIME:~0,2% - даст Вам текущий час в Вашей переменной среды ВРЕМЕНИ

Так что-то вроде этого:

IF %TIME:~0,2% == 19 CALL do_Night_Wallpaper.reg
IF %TIME:~0,2% == 07 CALL do_Day_Wallpaper.reg

Был бы достаточно, чтобы сценарий был помещен в Вашего планировщика задач и быть установленным выполнить каждый 1 час. Конечно, можно хотеть скорректировать часы к уровню комфорта часового пояса. Между тем операторы IF записаны так, чтобы они излишне не называли reg файлы. Но это означает, что необходимо установить планировщика задач для выполнения его один раз в час, по крайней мере.

Что касается самих reg файлов, это настройки, которые Вы после:

  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\Wallpaper
  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\WallpaperStyle

Первое получает полный путь к изображению обоев. Вторым является целое число 0 = центрируемый, 1 = размещенный рядом, 2 = расширенный.

3
ответ дан 07.12.2019, 17:03

Вот маленькая программа VBS, "готовая использоваться": это собирает все те команды (выбор случайного файла изображения в каталоге с помощью "Рандомизировать" команды VBS + обновляются, обои Windows с ним с помощью "UpdatePerUserSystemParameters" + обновляют реестр Windows "WallpaperStyle").

И это работает с.JPG файлами изображения (не только с.BMP файлами), который довольно удобен...

Исходный код сценария VB описан по http://sites.google.com/site/sharerandomwallpapers/ Спасибо.

1
ответ дан 07.12.2019, 17:03

Теги

Похожие вопросы