中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 实用批处理[之]更换桌面背景
作者:
标题: 实用批处理[之]更换桌面背景 上一主题 | 下一主题
wxcute
中级用户





积分 458
发帖 211
注册 2006-7-26
状态 离线
『楼 主』:  实用批处理[之]更换桌面背景

趁今天有点空,发点实用的P

我知道这个有人发过,全部搜索了一遍,我的还是有不同点的。
我的能设置jpg图片为背景,前面也有人发过能设jpg图片的,不过要DLL文件支持,而我的不用。
其中好像涉及到系统自动将jpg转化为bmp格式的问题,希望有识之士能研究出来系统怎么个自动转换的原理。

"%userProfile%\Local Settings\Application Data\Microsoft\Wallpaper1.bmp"
此为当前桌面背景完整路径。

测试环境:XP SP2
::复制更换桌面背景.bat::
::将bmp格式图片拖入P中
@echo off
title 更换桌面背景
cd/d %~dp0
if /i %~x1==.BMP copy %1 "%userProfile%\Local Settings\Application Data\Microsoft\Wallpaper1.bmp"
echo 正在更换桌面背景
RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters
goto :eof
::复制更换桌面背景.bat::
::::::::::::::::::::::::
这个在论坛有人发过。
::一般更换墙纸.bat::
::图片为bmp格式
::拖入bmp格式图片即设置它为背景。
::直接双击运行,若当前目录中有bmp格式图片,则将名称排在最后的一张设为壁纸
@echo off
title 更换墙纸
setlocal enableDelayedExpansion
set pic=%1
if "!pic!"=="" call :search
if "!pic!"=="" set pic="%userProfile%\Local Settings\Application Data\Microsoft\Wallpaper1.bmp"
echo 正在添加注册表项目...
reg add "HKCU\Control Panel\Desktop" /v Wallpaper /d !pic! /f>nul
reg add "HKCU\Control Panel\Desktop" /v WallpaperStyle /d "2" /f>nul
echo 正在更换桌面背景
RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters
goto :eof
:search
 cd/d "%~dp0"
 for /f "delims=" %%a in ('dir/b *.bmp') do (
  set pic="%~dp0%%a"
 )
 goto :eof
::一般更换壁纸.bat::
::::::::::::::::::::

::强制更换壁纸.bat::
::有些系统不能成功
::图片为bmp或jpg格式
::如果图片格式为jpg,则桌面图标文字有背景色(成功设置后,运行一遍下面的还原壁纸可去除背景色)
::拖入图片运行
::双击直接运行,名字排后的一张设为背景
::同时可以禁止通过桌面属性来更改壁纸(用软件更改不能禁止)
@echo off
title 更换壁纸
setlocal enableDelayedExpansion
set pic=%1
if "!pic!"=="" call :search
if "!pic!"=="" set pic="%userProfile%\Local Settings\Application Data\Microsoft\Wallpaper1.bmp"
echo 正在添加注册表项目...
reg add "HKCU\Control Panel\Desktop" /v Wallpaper /d !pic! /f>nul
reg add "HKCU\Control Panel\Desktop" /v WallpaperStyle /d "2" /f>nul
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v Wallpaper /d !pic! /f>nul
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v WallpaperStyle /d "2" /f>nul
echo 正在更换桌面背景
RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters
goto :eof
:search
 cd/d "%~dp0"
 for /f "delims=" %%a in ('dir/b *.jpg *.bmp') do (
  set pic="%~dp0%%a"
 )
 goto :eof
::强制更换壁纸.bat::
::::::::::::::::::::

::还原壁纸.bat::
::确保有"%userProfile%\Local Settings\Application Data\Microsoft\Wallpaper1.bmp"
@echo off
title 还原壁纸
set pic="%userProfile%\Local Settings\Application Data\Microsoft\Wallpaper1.bmp"
echo 正在添加注册表项目...
reg add "HKCU\Control Panel\Desktop" /v Wallpaper /d %pic% /f>nul
reg add "HKCU\Control Panel\Desktop" /v WallpaperStyle /d "2" /f>nul
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v Wallpaper /d %pic% /f>nul
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v WallpaperStyle /d "2" /f>nul
echo 正在还原桌面背景
RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters
goto :eof
::还原壁纸.bat::
::::::::::::::::

说明文档
存放桌面背景的几个路径
-------------------------
C:\WINDOWS\Web\Wallpaper
::jpg桌面(还有Bliss.bmp)
C:\WINDOWS
::bmp桌面
[图片收藏]或[我的图片][My Pictures]
::jpg、bmp、gif
-------------------------
其他两个位置
-------------------------
你指定的图片位置
::jpg、bmp、gif
"%userProfile%\Local Settings\Application Data\Microsoft\Wallpaper1.bmp"
::无特殊情况即为当前桌面背景
=========================
[ Last edited by wxcute on 2008-7-12 at 08:08 PM ]



┌───────┐
├→学习→实践→┤
└───────┘
2008-7-12 17:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wxcute
中级用户





积分 458
发帖 211
注册 2006-7-26
状态 离线
『第 2 楼』:  

可怜,没人看,自己顶。



┌───────┐
├→学习→实践→┤
└───────┘
2008-7-12 18:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 3 楼』:  



  Quote:
::同时可以禁止通过桌面属性来更改壁纸

个人认为这样做很不好。

[ Last edited by HAT on 2008-7-12 at 07:03 PM ]



2008-7-12 19:01
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wxcute
中级用户





积分 458
发帖 211
注册 2006-7-26
状态 离线
『第 4 楼』:  

不好意思,这个忘记发了。
::取消壁纸限制.bat::
@echo off
title 取消壁纸限制
echo 正在删除注册表项目...
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v Wallpaper /f>nul
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v WallpaperStyle /f>nul
echo 正在刷新
RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters
goto :eof
::取消壁纸限制.bat::
::::::::::::::::::::




┌───────┐
├→学习→实践→┤
└───────┘
2008-7-12 19:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 5 楼』:  

顶~ ^_^
rundll32.exe果然很强大。。



心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-7-12 19:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 6 楼』:  


@echo off
set pic=%1
if "%pic%"=="" set pic="%userProfile%\Local Settings\Application Data\Microsoft\Wallpaper1.bmp"
reg add "HKCU\Control Panel\Desktop" /v Wallpaper /d "%pic%" /f>nul
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v Wallpaper /d "%pic%" /f>nul
set pic="%userProfile%\Local Settings\Application Data\Microsoft\Wallpaper1.bmp"
reg add "HKCU\Control Panel\Desktop" /v Wallpaper /d %pic% /f>nul
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v Wallpaper /f>nul
RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters
把你的两个批处理合并成一个不就行了吗



2008-7-12 20:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wxcute
中级用户





积分 458
发帖 211
注册 2006-7-26
状态 离线
『第 7 楼』:  

回6楼
一次用不行,要等待系统把图片转换成功了才行,不然不起作用。

还有就是系统自动把jpg转化成bmp,这个有人研究出来了吗?我搞不清,是利用mspaint还是shimgvw.dll呢?



┌───────┐
├→学习→实践→┤
└───────┘
2008-7-12 20:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dato
高级用户




积分 916
发帖 377
注册 2004-3-8
状态 离线
『第 8 楼』:  

曾经用过png写人注册表,但是实际开机的结果可能在加载png墙纸时出现半屏的黑屏现象。最后发现所有的不管什么格式最终都转换为bmp格式。所以也不费劲的所有的都用BMP



http://dato.ys168.com
google search bot
http://dato.minidns.net/
2008-7-12 22:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: