Você pode usar tarefas agendadas junto com este VBScript que acabei de hackear (isso é para usar vários papéis de parede e alternar a cada poucos minutos, por exemplo):
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
Observação : os papéis de parede devem ser bitmaps. Se você quiser evitar mais scripts para verificar a hora do sistema periodicamente, você pode usar o mesmo script para a noite e o dia, basta fazer uma tarefa agendada separada e executá-la no horário desejado no intervalo desejado. Faça 2 pastas, uma para papéis de parede do dia e outra para papéis de parede nocturnos, coloque uma cópia do script em cada uma delas. Você precisará alterar o 100
na linha 3 para quantos papéis de parede estiverem em cada um e renomeá-los para Wallpaper1, Wallpaper2, etc
para esse script funcionar (ou modificar o nome no script). Modifique também o valor CurrentDir
para cada.
Se você quiser usar apenas dois papéis de parede (configure-o para ser executado a cada 59 minutos ou mais para garantir que você não perca uma hora):
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