【问题标题】:When I use a VBS script to change my wallpaper, I have to log off for changes to take effect当我使用 VBS 脚本更改我的壁纸时,我必须注销才能使更改生效
【发布时间】:2014-08-24 20:11:24
【问题描述】:

当我使用 VBS 脚本更改我的壁纸时,我必须注销才能使更改生效。我怎样才能做到这一点,这样我就不必在运行脚本后注销?

我正在运行 Windows 7,并且正在运行将采用给定路径文件的代码,例如 a.jpga.bmp,并将文件替换为地点:

C:\Users\Brad\AppData\Roaming\Microsoft\Windows\Themes\TranscodedWallpaper.jpg

我列出了我找到的 VBS 文件的代码,它应该刷新我的活动桌面。它像脚本一样闪烁,但它不会更新我的壁纸:

' Create explorer command file to toggle desktop window
Set oFSO = CreateObject("Scripting.FileSystemObject")
sSCFFile= oFSO.BuildPath(oFSO.GetSpecialFolder(2), oFSO.GetTempName &".scf")
With oFSO.CreateTextFile(sSCFFile, True)
.WriteLine("[Shell]")
.WriteLine("Command=2")
.WriteLine("[Taskbar]")
.WriteLine("Command=ToggleDesktop")
.Close
End With

' Toggle desktop and send F5 (refresh)
With CreateObject("WScript.Shell")
.Run """" & sSCFFile & """"
WScript.Sleep 100
.Sendkeys "{F5}"
End With
' Delete explorer command file
oFSO.DeleteFile sSCFFile

【问题讨论】:

  • 我认为你有 2 个选项。使用像SetWallpaper.exe 这样的第三方实用程序,或者你可以使用像this 这样的发送键来发挥作用

标签: shell vbscript windows-7 wallpaper


【解决方案1】:

设置存储在内存中。更改注册表项不会改变任何内容。

程序这样做的方式是使用 SystemParametersInfo

系统参数信息

检索或设置系统范围参数之一的值。此功能还可以在设置参数时更新用户配置文件。

BOOL SystemParametersInfo(
  UINT uiAction,
  UINT uiParam,
  PVOID pvParam,
  UINT fWinIni
);

SPI_SETDESKWALLPAPER

设置桌面壁纸。 pvParam 参数的值决定了新壁纸。要指定墙纸位图,请将 pvParam 设置为指向包含位图文件名称的以空字符结尾的字符串。将 pvParam 设置为 "" 会删除壁纸。将 pvParam 设置为 SETWALLPAPER_DEFAULT 或 NULL 将恢复为默认壁纸。

VB.Net 安装在所有计算机上。改用它。

【讨论】:

  • Taskkill explorer 然后重新启动它。 Explorer 在启动时重新读取保存的设置。
【解决方案2】:

我做了一些搜索,发现了一个 .bat 文件的代码块,如下所示:

>      @echo off
>      taskkill /f /IM explorer.exe
>      Start explorer.exe
>      @pause

这解决了我的问题,因为在 explorer.exe 启动时加载了背景。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 2014-12-07
    相关资源
    最近更新 更多