[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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 编辑 ]
心绪平和,眼藏静谧。

返回列表