Board logo

标题: [问题求助] [巳解决]如何用vbs设置动态壁纸 ? [打印本页]

作者: 807979023    时间: 2013-4-15 07:47     标题: [巳解决]如何用vbs设置动态壁纸 ?

本帖最后由 807979023 于 2013-4-19 20:47 编辑

xp系统在C:\WINDOWS\Web\Wallpaper下有:  荷花.swf  荷花.htm

巳修改注册表: reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v Wallpaper /d %windir%\Web\Wallpaper\荷花.htm /f

显示属性中巳选中“荷花”, 如何用vbs模拟下面的确定按钮,设置为当前壁纸 ?
作者: CrLf    时间: 2013-4-19 16:58

这个吧,vbs 可以发送回车符
  1. createobject("wscript.shell").sendkey "{endter}"
复制代码
bat 可以这样
  1. assoc .refresh=tmp&assoc .refresh=""
复制代码
记得以前 fastslz 提到过 rundll 调用 api 刷新桌面的方案,没记下来,现在找不到了...
作者: czjt1234    时间: 2013-4-19 19:55

这是个难题,我搜索了好些时间,也不知道windows是怎么处理的
作者: powerbat    时间: 2013-4-19 20:10

  1. rundll32.exe user32.dll,UpdatePerUserSystemParameters
复制代码
据说是一个未公开的API,可能在新版系统中会失效。
作者: 807979023    时间: 2013-4-19 20:35

本帖最后由 807979023 于 2013-4-19 20:45 编辑

巳解决:

set WshShell = Wscript.CreateObject("Wscript.Shell")
set a=CreateObject("WScript.Shell")
WshShell.Run "control desk.cpl"  '打开显示属性
Wscript.Sleep 500                '延时0.5秒
WshShell.SendKeys "^{tab}"       '向右打开桌面选项
WScript.Sleep 100                '延时0.1秒
a.SendKeys "{ENTER}"             '按下回车键

感谢2楼4楼
2楼代码不错,很精简。4楼代码未试。
作者: CrLf    时间: 2013-4-19 21:41

过于依赖 sendkey 不太靠谱,能用精确的办法还是避免用 sendkey 比较好:
  1. rundll32.exe shell32.dll,Control_RunDLL  desk.cpl,,0
复制代码
按确定是没办法,这个只好 sendkey 了




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2