代码之家  ›  专栏  ›  技术社区  ›  Anuja Nimesh

在Windows中根据时间更改壁纸

  •  0
  • Anuja Nimesh  · 技术社区  · 6 年前

    我需要在启动时打开它,以便在白天和晚上更换壁纸

    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
    

    这是将打开批处理文件的vbs,这些文件将更改注册表

    日批处理文件

    @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
    

    夜间批处理文件

        @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
    

    但当我使用vbs时,它没有更改注册表

    请帮忙

    谢谢

    2 回复  |  直到 6 年前
        1
  •  0
  •   Compo    6 年前

    我会这样做, (尤其是因为 %TIME% 取决于机器) :

    @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
    
        2
  •  0
  •   Gerhard    6 年前

    只需创建一个不带VBS的批处理文件并运行它。

    笔记rundll32会导致延迟。exe,所以如果它连续运行以进行测试,它不会每次更新。

    @echo off
    setlocal enabledelayedexpansion
    set "Wtime=!time:~0,2!" 
    if "!Wtime!" leq "17" 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  & goto done
    if "!Wtime!" geq "17" reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v Wallpaper /t REG_SZ /d "D:\C:\Users\AnB\Desktop\Texts\Projects\Project WallTime\Day and Night\Night.png" /f & goto done
    :done
    timeout /t 5 >nul
    start "" /b RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
    endlocal
    

    牢记 enabledelayedexpansion 这里真的不需要。