Search code examples
windowsbatch-filevbscriptregistrywallpaper

Change Wallpaper According to Time in Windows


I need to open it on startup to change the wallpaper at day n night

Dim objShell
str1 = "C:\Users\AnB\Desktop\Texts\Projects\Project WallTime\Day.bat"
str2 = "C:\Users\AnB\Desktop\Texts\Projects\Project WallTime\Night.bat"
Set objShell = Wscript.CreateObject("WScript.Shell")
if hour(time) < 17 then
objShell.Run str1
if hour(time) > 16 then
objShell.Run str2
end if 
end if

This is the vbs that will open batch files that will change the Reg

Batch file for day

@echo off
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v Wallpaper /t REG_SZ /d "C:\Users\AnB\Desktop\Texts\Projects\Project WallTime\Day and Night\Day.png" /f
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters

Batch file for night

    @echo off
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v Wallpaper /t REG_SZ /d "C:\Users\AnB\Desktop\Texts\Projects\Project WallTime\Day and Night\Night.png" /f
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters

but when i use the vbs it did not change the registry

Please Help

Thanks


Solution

  • I would do it like this, (especially because the output of %TIME% is machine dependent):

    @Echo Off
    
    Set "locn=%UserProfile%\Desktop\Texts\Projects\Project WallTime"
    Set "rstr=Reg Add "HKCU\Control Panel\Desktop" /V Wallpaper /D "
    Set "str1=%locn%\Day.bat"
    Set "str2=%locn%\Night.bat"
    Set /A "now=10%TIME:~,2%" 2>Nul
    
    If %now:~-2% Lss 17 (%rstr% "%str1%" /F >Nul
    ) Else %rstr% "%str2%" /F >Nul
    RunDll32 User32.dll,UpdatePerUserSystemParameters >Nul