[已解决]如何让AutoIt更换壁纸时有淡出淡入效果?
本帖最后由 wl00560 于 2012-3-22 18:53 编辑下了个代码:$s_BitmapImage="c:\2002-10-29-10_jp.jpg"
_SetWallpaper($s_BitmapImage, 0)
Func _SetWallpaper($s_BitmapImage, $l_params = 0)
$ai_Ret = DllCall('user32.dll', 'long', 'SystemParametersInfoA', 'long', 20, 'long', 0, 'str', $s_BitmapImage, 'long', $l_params)
Return $ai_Ret
EndFunc可以更换,但没有淡出淡入效果了,请问如何才能有淡出淡入效果? 对了,我的系统就是Windows 7……
因为Windows 7自带的只能用一个目录的图片,所以想用别的软件来更换壁纸……
可是没有淡出淡入效果,AutoIt应该能做到这点吧…… Return $ai_Ret 系统的问题吧? 本帖最后由 lixiaolong 于 2012-3-22 01:00 编辑
$s_BitmapImage="c:\2002-10-29-10_jp.jpg"
_SetWallpaper($s_BitmapImage, 0)
Func _SetWallpaper($s_BitmapImage, $l_params = 0, $s_Sleep = 10)
SplashImageOn("Splash", $s_BitmapImage, @DesktopWidth + 2, @DesktopHeight + 2, -2, -2, 1)
WinSetTrans('Splash', "", 0)
For $trans = 0 To 255
If $trans = 255 Then _
$ai_Ret = DllCall('user32.dll', 'long', 'SystemParametersInfoA', 'long', 0x14, 'long', 0, 'str', $s_BitmapImage, 'long', $l_params)
WinSetTrans("Splash", "", $trans)
Sleep($s_Sleep)
Next
SplashOff()
Return $ai_Ret
EndFunc ;==>_SetWallpaper
谢谢,可惜换的时候会短暂的消失窗口,有点晃眼……
能不能在后台换,不影响当前的窗口? 本帖最后由 lixiaolong 于 2012-3-22 18:25 编辑
回复 5# wl00560
看看这个可以不?桌面图标还是消失一下.
#include <WinAPI.au3>
#include <Constants.au3>
$s_BitmapImage = "Desert.jpg"
_SetWallpaper($s_BitmapImage, 0, 1)
Func _SetWallpaper($s_BitmapImage, $l_params = 0, $s_Sleep = 10)
Local $trans, $ai_Ret
SplashImageOn("Splash", $s_BitmapImage, @DesktopWidth + 2, @DesktopHeight - 28, -2, -2, 1)
_WinAPI_SetWindowPos(WinGetHandle("Splash"), $HWND_BOTTOM, -2, -2, @DesktopWidth + 2, @DesktopHeight - 28, $SWP_NOACTIVATE)
WinSetTrans('Splash', "", 0)
For $trans = 0 To 255
If $trans = 255 Then _
$ai_Ret = DllCall('user32.dll', 'long', 'SystemParametersInfoA', 'long', 0x14, 'long', 0, 'str', $s_BitmapImage, 'long', $l_params)
WinSetTrans("Splash", "", $trans)
Sleep($s_Sleep)
Next
SplashOff()
Return $ai_Ret
EndFunc ;==>_SetWallpaper
可以了,谢谢你的帮助……
页:
[1]