前两天用AutoIt写的,转成命令行工具了~- :: 设置壁纸
- SetWallPaper.exe "c:\Test.bmp"
- :: SetWallPaper.exe "c:\Test.jpg"
-
- :: 获取壁纸所在路径。
- SetWallPaper.exe /where
复制代码
- #AutoIt3Wrapper_Change2CUI=y
- #include <GDIPlus.au3>
- Global Const $Spi_SetDeskWallPaper = 0x14
- Global Const $Spi_GetDeskWallPaper = 0x73
- Global Const $Spif_SendChange = 2
- Global Const $sHelp = @ScriptName & ' [bitmap path|/where]' & @CrLf
- If $CmdLine[0] = 0 Then
- ConsoleWrite($sHelp)
- Exit(0)
- ElseIf $CmdLine[0] <> 1 Then
- ConsoleWrite($sHelp)
- Exit(-1)
- EndIf
- Switch $CmdLine[1]
- Case "/where"
- ConsoleWrite(_GetDesktopWallPaper() & @CrLf)
- Exit(0)
- Case Else
- If not FileExists($CmdLine[1]) Then Exit(1)
- If _SetDesktopWallPaper($CmdLine[1]) Then Exit(0)
- Exit(1)
- EndSwitch
- Func _SetDesktopWallPaper($szPaperPath, $iSendChange = 2)
- Local $iResult, $tPaperPath
- If not _IsBMP($szPaperPath) Then
- _JpgToBmp($szPaperPath, @TempDir & "\WallPaper.bmp")
- $szPaperPath = @TempDir & "\WallPaper.bmp"
- EndIf
- $tPaperPath = DllStructCreate("char[260]")
- DllStructSetData($tPaperPath, 1, $szPaperPath)
- $iResult = DllCall("user32.dll", "int", "SystemParametersInfo", _
- "uint", $Spi_SetDeskWallPaper, _
- "uint", 0, _
- "ptr", DllStructGetPtr($tPaperPath), _
- "uint", $iSendChange)
- $tPaperPath = 0
- Return $iResult[0] <> 0
- EndFunc ;==>_SetDesktopWallPaper()
- Func _GetDesktopWallPaper()
- Local $buffer = DllStructCreate("char[260]"), $szResult
- DllCall("user32.dll", "int", "SystemParametersInfo", _
- "uint", $Spi_GetDeskWallPaper, _
- "uint", DllStructGetSize($buffer), _
- "ptr", DllStructGetPtr($buffer), _
- "uint", 0)
- $szResult = DllStructGetData($buffer, 1)
- $buffer = 0
- Return $szResult
- EndFunc ;==>_GetDesktopWallPaper()
- Func _IsBMP($szFile)
- If StringRegExp($szFile, "(?i)\.bmp$") Then Return True
- EndFunc ;==>_IsBMP()
- Func _JpgToBmp($Jpg,$Bmp)
- Local $hImage, $CLSID
- _GDIPlus_Startup()
- $hImage = _GDIPlus_ImageLoadFromFile($Jpg)
- $CLSID = _GDIPlus_EncodersGetCLSID("BMP")
- _GDIPlus_ImageSaveToFileEx($hImage,$Bmp, $CLSID)
- _GDIPlus_ShutDown()
- EndFunc ;==>_JpgToBmp()
复制代码
点此下载 目录:batch tools,认证密码:bathome
[ 本帖最后由 pusofalse 于 2009-6-19 00:41 编辑 ] |