当我使用VBS脚本更改壁纸时,我必须注销更改才能生效

时间:2014-08-24 20:11:25

标签: shell vbscript windows-7 wallpaper

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

我正在运行Windows 7并且正在运行代码,该代码将采用给定的路径文件,例如 a.jpg a.bmp ,并替换该文件位置:

C:\用户\布拉德\应用程序数据\漫游\微软\的Windows \主题\ 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 个答案:

答案 0 :(得分:1)

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

程序执行的方式是使用SystemParametersInfo

SystemParametersInfo

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

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

SPI_SETDESKWALLPAPER

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

VB.Net安装了所有计算机。请改用它。

答案 1 :(得分:0)

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

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

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