Mein Weihnachtsgeschenk

    • Offizieller Beitrag

    Hallo

    Das ist mein Weihnachtsgeschenk an das Forum bzw an die User des Froums: ;)

    Spoiler anzeigen
    [autoit]

    #include<GDIPlus.au3>
    #include<WinAPI.au3>
    Global Const $AC_SRC_ALPHA = 1
    Global Const $ULW_ALPHA = 2
    Global $CursorGUI
    Global $cur[101]

    [/autoit] [autoit][/autoit] [autoit]

    InetGet("http://img-up.net/img/snowflakemTAS4gEA.png",@TempDir&"\snw~.png")
    For $i = 0 to 100
    $cur[$i] = _CreateCursor(Random(0,@DesktopWidth,1),Random(0,@DesktopHeight,1))
    Next

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(262144,"","Frohe Weinachten, wünscht GtaSpider")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _CreateCursor($iLeft = -1, $iTop = -1)
    Local $width, $pngSrc, $height, $hImage, $aRet[2], $CursorGUI

    _GDIPlus_Startup()
    $pngSrc = @TempDir&"\snw~.png"
    $hImage = _GDIPlus_ImageLoadFromFile($pngSrc)

    [/autoit] [autoit][/autoit] [autoit]


    $width = _GDIPlus_ImageGetWidth($hImage)
    $height = _GDIPlus_ImageGetHeight($hImage)

    [/autoit] [autoit][/autoit] [autoit]


    $CursorGUI = GUICreate("Cur", $width, $height, $iLeft, $iTop, $WS_POPUP, $WS_EX_LAYERED+$WS_EX_TOOLWINDOW)
    SetBitmap($CursorGUI, $hImage, 0)

    GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
    GUISetState()
    WinSetOnTop($CursorGUI, "", 1)

    For $i = 0 To 255 Step Random(1,2,1)
    SetBitmap($CursorGUI, $hImage, $i)
    Next
    $aRet[0] = $CursorGUI
    $aRet[1] = $hImage
    Return $aRet
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _MoveCursor($ahCur, $iLeft, $iTop)
    WinMove($ahCur[0], "", $iLeft, $iTop)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _DeleteCursor($ahCursor)

    For $i = 255 To 0 Step - 10
    SetBitmap($ahCursor[0], $ahCursor[1], $i)
    Next

    _GDIPlus_ImageDispose($ahCursor[1])
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func OnAutoItExit()
    _GDIPlus_Shutdown()
    FileDelete(@TempDir&"\snw~.png")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
    If ($hWnd = $CursorGUI) And ($iMsg = $WM_NCHITTEST) Then Return $HTCAPTION
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func SetBitmap($hGUI, $hImage, $iOpacity)
    Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend

    [/autoit] [autoit][/autoit] [autoit]

    $hScrDC = _WinAPI_GetDC(0)
    $hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
    $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
    $hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
    $tSize = DllStructCreate($tagSIZE)
    $pSize = DllStructGetPtr($tSize)
    DllStructSetData($tSize, "X", _GDIPlus_ImageGetWidth($hImage))
    DllStructSetData($tSize, "Y", _GDIPlus_ImageGetHeight($hImage))
    $tSource = DllStructCreate($tagPOINT)
    $pSource = DllStructGetPtr($tSource)
    $tBlend = DllStructCreate($tagBLENDFUNCTION)
    $pBlend = DllStructGetPtr($tBlend)
    DllStructSetData($tBlend, "Alpha", $iOpacity)
    DllStructSetData($tBlend, "Format", $AC_SRC_ALPHA)
    _WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
    _WinAPI_ReleaseDC(0, $hScrDC)
    _WinAPI_SelectObject($hMemDC, $hOld)
    _WinAPI_DeleteObject($hBitmap)
    _WinAPI_DeleteDC($hMemDC)
    EndFunc

    [/autoit]

    Hab ich gemacht mit dieser Cursor Funktion die ich hier mal gepostet hab.
    Viel spaß damit :rofl:

    Mfg Spider

    Edit: Hab mal die Includes hinzugefügt^^

  • Hier mal die Version für das Alte Autoit vor 2.3.10

    Spoiler anzeigen
    [autoit]

    #Include <GUIConstants.au3>
    #include <Constants.au3>
    #include <A3LGDIPlus.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $AC_SRC_ALPHA = 1
    Global Const $ULW_ALPHA = 2
    Global $CursorGUI
    Global $cur[101]

    [/autoit] [autoit][/autoit] [autoit]

    InetGet("http://img-up.net/img/snowflakemTAS4gEA.png",@TempDir&"\snw~.png")
    TraySeticon(@TempDir&"\snw~.png")
    For $i = 0 to 100
    $cur[$i] = _CreateCursor(Random(0,@DesktopWidth,1),Random(0,@DesktopHeight,1))
    Next

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(262144,"","Frohe Weinachten, wünscht GtaSpider")

    [/autoit] [autoit][/autoit] [autoit]

    Func _CreateCursor($iLeft = -1, $iTop = -1)
    Local $width, $pngSrc, $height, $hImage, $aRet[2], $CursorGUI

    _GDIP_Startup()
    $pngSrc = @TempDir&"\snw~.png"
    $hImage = _GDIP_ImageLoadFromFile($pngSrc)

    [/autoit] [autoit][/autoit] [autoit]


    $width = _GDIP_ImageGetWidth($hImage)
    $height = _GDIP_ImageGetHeight($hImage)

    [/autoit] [autoit][/autoit] [autoit]


    $CursorGUI = GUICreate("Cur", $width, $height, $iLeft, $iTop, $WS_POPUP, $WS_EX_LAYERED+$WS_EX_TOOLWINDOW)
    SetBitmap($CursorGUI, $hImage, 0)

    GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
    GUISetState()
    WinSetOnTop($CursorGUI, "", 1)

    For $i = 0 To 255 Step Random(1,2,1)
    SetBitmap($CursorGUI, $hImage, $i)
    Next
    $aRet[0] = $CursorGUI
    $aRet[1] = $hImage
    Return $aRet
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _MoveCursor($ahCur, $iLeft, $iTop)
    WinMove($ahCur[0], "", $iLeft, $iTop)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _DeleteCursor($ahCursor)

    For $i = 255 To 0 Step - 10
    SetBitmap($ahCursor[0], $ahCursor[1], $i)
    Next

    _GDIP_ImageDispose($ahCursor[1])
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func OnAutoItExit()
    _GDIP_Shutdown()
    FileDelete(@TempDir&"\snw~.png")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
    If ($hWnd = $CursorGUI) And ($iMsg = $WM_NCHITTEST) Then Return $HTCAPTION
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func SetBitmap($hGUI, $hImage, $iOpacity)
    Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend

    [/autoit] [autoit][/autoit] [autoit]

    $hScrDC = _API_GetDC(0)
    $hMemDC = _API_CreateCompatibleDC($hScrDC)
    $hBitmap = _GDIP_BitmapCreateHBITMAPFromBitmap($hImage)
    $hOld = _API_SelectObject($hMemDC, $hBitmap)
    $tSize = DllStructCreate($tagSIZE)
    $pSize = DllStructGetPtr($tSize)
    DllStructSetData($tSize, "X", _GDIP_ImageGetWidth($hImage))
    DllStructSetData($tSize, "Y", _GDIP_ImageGetHeight($hImage))
    $tSource = DllStructCreate($tagPOINT)
    $pSource = DllStructGetPtr($tSource)
    $tBlend = DllStructCreate($tagBLENDFUNCTION)
    $pBlend = DllStructGetPtr($tBlend)
    DllStructSetData($tBlend, "Alpha", $iOpacity)
    DllStructSetData($tBlend, "Format", $AC_SRC_ALPHA)
    _API_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
    _API_ReleaseDC(0, $hScrDC)
    _API_SelectObject($hMemDC, $hOld)
    _API_DeleteObject($hBitmap)
    _API_DeleteDC($hMemDC)
    EndFunc

    [/autoit]