wl00560 发表于 2012-3-20 23:14:40

[已解决]如何让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可以更换,但没有淡出淡入效果了,请问如何才能有淡出淡入效果?

wl00560 发表于 2012-3-21 13:38:14

对了,我的系统就是Windows 7……
因为Windows 7自带的只能用一个目录的图片,所以想用别的软件来更换壁纸……
可是没有淡出淡入效果,AutoIt应该能做到这点吧……

mjpop 发表于 2012-3-21 21:45:55

Return $ai_Ret   系统的问题吧?

lixiaolong 发表于 2012-3-22 00:24:21

本帖最后由 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

wl00560 发表于 2012-3-22 13:07:53

谢谢,可惜换的时候会短暂的消失窗口,有点晃眼……
能不能在后台换,不影响当前的窗口?

lixiaolong 发表于 2012-3-22 18:20:21

本帖最后由 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

wl00560 发表于 2012-3-22 18:53:27

可以了,谢谢你的帮助……
页: [1]
查看完整版本: [已解决]如何让AutoIt更换壁纸时有淡出淡入效果?