[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 发个设置壁纸的小工具SetWallPaper

前两天用AutoIt写的,转成命令行工具了~
  1. :: 设置壁纸
  2. SetWallPaper.exe "c:\Test.bmp"
  3. :: SetWallPaper.exe "c:\Test.jpg"
  4. :: 获取壁纸所在路径。
  5. SetWallPaper.exe /where
复制代码
  1. #AutoIt3Wrapper_Change2CUI=y
  2. #include <GDIPlus.au3>
  3. Global Const $Spi_SetDeskWallPaper = 0x14
  4. Global Const $Spi_GetDeskWallPaper = 0x73
  5. Global Const $Spif_SendChange = 2
  6. Global Const $sHelp = @ScriptName & ' [bitmap path|/where]' & @CrLf
  7. If $CmdLine[0] = 0 Then
  8. ConsoleWrite($sHelp)
  9. Exit(0)
  10. ElseIf $CmdLine[0] <> 1 Then
  11. ConsoleWrite($sHelp)
  12. Exit(-1)
  13. EndIf
  14. Switch $CmdLine[1]
  15. Case "/where"
  16. ConsoleWrite(_GetDesktopWallPaper() & @CrLf)
  17. Exit(0)
  18. Case Else
  19. If not FileExists($CmdLine[1]) Then Exit(1)
  20. If _SetDesktopWallPaper($CmdLine[1]) Then Exit(0)
  21. Exit(1)
  22. EndSwitch
  23. Func _SetDesktopWallPaper($szPaperPath, $iSendChange = 2)
  24. Local $iResult, $tPaperPath
  25. If not _IsBMP($szPaperPath) Then
  26.   _JpgToBmp($szPaperPath, @TempDir & "\WallPaper.bmp")
  27.   $szPaperPath = @TempDir & "\WallPaper.bmp"
  28. EndIf
  29. $tPaperPath = DllStructCreate("char[260]")
  30. DllStructSetData($tPaperPath, 1, $szPaperPath)
  31. $iResult = DllCall("user32.dll", "int", "SystemParametersInfo", _
  32.   "uint", $Spi_SetDeskWallPaper, _
  33.   "uint", 0, _
  34.   "ptr", DllStructGetPtr($tPaperPath), _
  35.   "uint", $iSendChange)
  36. $tPaperPath = 0
  37. Return $iResult[0] <> 0
  38. EndFunc ;==>_SetDesktopWallPaper()
  39. Func _GetDesktopWallPaper()
  40. Local $buffer = DllStructCreate("char[260]"), $szResult
  41. DllCall("user32.dll", "int", "SystemParametersInfo", _
  42.   "uint", $Spi_GetDeskWallPaper, _
  43.   "uint", DllStructGetSize($buffer), _
  44.   "ptr", DllStructGetPtr($buffer), _
  45.   "uint", 0)
  46. $szResult = DllStructGetData($buffer, 1)
  47. $buffer = 0
  48. Return $szResult
  49. EndFunc ;==>_GetDesktopWallPaper()
  50. Func _IsBMP($szFile)
  51. If StringRegExp($szFile, "(?i)\.bmp$") Then Return True
  52. EndFunc ;==>_IsBMP()
  53. Func _JpgToBmp($Jpg,$Bmp)
  54. Local $hImage, $CLSID
  55. _GDIPlus_Startup()
  56. $hImage = _GDIPlus_ImageLoadFromFile($Jpg)
  57. $CLSID = _GDIPlus_EncodersGetCLSID("BMP")
  58. _GDIPlus_ImageSaveToFileEx($hImage,$Bmp, $CLSID)
  59. _GDIPlus_ShutDown()
  60. EndFunc ;==>_JpgToBmp()
复制代码


点此下载 目录:batch tools,认证密码:bathome

[ 本帖最后由 pusofalse 于 2009-6-19 00:41 编辑 ]
心绪平和,眼藏静谧。

只能指定一张壁纸路径吗  不能指定整个文件夹随机换

TOP

回复 2楼 的帖子

自己随便写个批处理来配合一下这个工具即可
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2楼 的帖子

可以用:
链接: https://pan.baidu.com/s/1eOWBsB0NXNr7PwUbqjiRjA 提取码: 6hf6

Random wallpaper, Next wallpaper, Previous wallpaper

Parameter is a folder or a BMP, JPG or GIF file. If it is a folder, all subfolders are searched to choose one picture which is set as desktop wallpaper. If you have JPG or GIF wallpapers, you must enable Active desktop. (Right-click on the desktop and check 'Show web content').
The command "Random wallpaper" chooses a file randomly. Commands "Next wallpaper" or "Previous wallpaper" select next/previous file in a folder according to how the files are stored on your hard disk.

例:

HotkeyP -Random wallpaper "C:\WINDOWS\Web\WALLPAPER\"
HotkeyP -Random wallpaper "C:\WINDOWS\Web\WALLPAPER\Windows XP.jpg"
HotkeyP -Next wallpaper "C:\WINDOWS\Web\WALLPAPER\"

TOP

非常好啊 谢谢楼主

TOP

好东西,收了。谢楼主!
来呀,高手,教我批处理呀!

TOP

看看,看看,看看,看看,看看,
1

评分人数

    • keen: 严禁纯水!PB -1

TOP

返回列表