• Ich beginne hiermit mit einer sogenannten WinFX udf, heißt visuelle Effekte für Windows bzw. GUIs.
    Ich starte mit WinFX_ResizeWindow: eines Fensters Größe "animiert" ändern:

    Spoiler anzeigen
    [autoit]

    Func _WinFX_ResizeWindow($sWindow,$width, $height,$step=5)
    $sTitle=WinGetTitle($sWindow)
    $sText=WinGetText($sWindow)
    $hHandle=WinGetHandle($sWindow)
    $pos=WinGetPos($sTitle)
    If not IsArray($pos) Then return false
    $oldwidth=$pos[2]
    $oldheight=$pos[3]
    $oldx=$pos[0]
    $oldy=$pos[1]
    $wdiff=$width-$oldwidth
    $hdiff=$height-$oldheight
    $j=0
    $i=0
    $wStep=$step
    $hStep=$step
    If $wdiff < 0 then $wStep = - $wStep
    If $hdiff < 0 then $hStep = - $hStep
    while Abs($i) <= Abs($wdiff) Or Abs($j) <= Abs($hdiff)
    If Abs($i) <= Abs($wdiff) Then $i += $wStep
    If Abs($j) <= Abs($hdiff) Then $j += $hStep
    MsgBox(0,"","newwidth=" & $oldwidth+$i & @CRLF & "newheight=" & $oldheight+$j & @CRLF & "i=" & $i)
    WinMove($sTitle,"",$oldx,$oldy,$oldwidth+$i,$oldheight+$j)
    WEnd
    Return $pos
    EndFunc
    Func _WinFX_FlashDesktop($iSpeed=3,$hColor=0xffffff)
    ;Remarks: Don't use AdLib with this
    GUICreate("Flash",@DesktopWidth,@DesktopHeight,0,0,0x80000000,0x00000080)
    GUISetBkColor($hColor)
    WinSetTrans("Flash","",240)
    GUISetState()
    For $i=100 To 255 step 5
    WinSetTrans("Flash","",$i)
    Next
    For $i=255 To 0 step -$iSpeed
    WinSetTrans("Flash","",$i)
    Next
    if not @error then return true
    EndFunc
    Func _WinFX_CloseDesktop($iSleep=1000)
    $guieins=GUICreate("CloseDesktop.1",@DesktopWidth,0,0,0,0x80000000,BitOr(0x00000080,0x00000008))
    $guizwei=GUICreate("CloseDesktop.2",@DesktopWidth,0,0,@DesktopHeight,0x80000000,BitOr(0x00000080,0x00000008))
    GUISetBkColor(0x000000,$guieins)
    GUISetBkColor(0x000000,$guizwei)
    GUISetState(@SW_SHOW,$guieins)
    GUISetState(@SW_SHOW,$guizwei)
    For $i=1 To @DesktopHeight
    WinMove("CloseDesktop.1","",0,0,@DesktopWidth,$i)
    WinMove("CloseDesktop.2","",0,(@DesktopHeight)-$i,@DesktopWidth,$i)
    Next
    sleep($iSleep)
    GUIDelete($guieins)
    GUIDelete($guizwei)
    EndFunc
    Func _WinFX_OpenDesktop($iSleep=1000)
    $guieins=GUICreate("CloseDesktop.1",@DesktopWidth,0,0,0,0x80000000,BitOr(0x00000080,0x00000008))
    $guizwei=GUICreate("CloseDesktop.2",@DesktopWidth,0,0,@DesktopHeight,0x80000000,BitOr(0x00000080,0x00000008))
    GUISetBkColor(0x000000,$guieins)
    GUISetBkColor(0x000000,$guizwei)
    GUISetState(@SW_SHOW,$guieins)
    GUISetState(@SW_SHOW,$guizwei)
    For $i=@DesktopHeight to 1 step -1
    WinMove("CloseDesktop.1","",0,0,@DesktopWidth,$i)
    WinMove("CloseDesktop.2","",0,(@DesktopHeight)-$i,@DesktopWidth,$i)
    Next
    sleep($iSleep)
    GUIDelete($guieins)
    GUIDelete($guizwei)
    EndFunc
    ;EXAMPLE
    $old=_WinFX_ResizeWindow("""WinFX",500,500,20)
    $old=_WinFX_ResizeWindow("""WinFX",$old[2],$old[3],20)

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

    _WinFX_CloseDesktop()
    sleep(1000)
    _WinFX_OpenDesktop()
    sleep(1000)
    _WinFX_FlashDesktop(1)

    [/autoit]

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

    Einmal editiert, zuletzt von L3viathan2142 (18. April 2009 um 13:19)

  • Das mit dem Fehler guck ich mir nachher mal an.
    Jetz erstmal die Erweiterung davon:
    _WinFX_FlashDesktop und _WinFX_CloseDesktop

    Spoiler anzeigen
    [autoit]

    Func _WinFX_ResizeWindow($sWindow,$width, $height,$step=5)
    $sTitle=WinGetTitle($sWindow)
    $sText=WinGetText($sWindow)
    $hHandle=WinGetHandle($sWindow)
    $pos=WinGetPos($sTitle)
    If not IsArray($pos) Then return false
    $oldwidth=$pos[2]
    $oldheight=$pos[3]
    $oldx=$pos[0]
    $oldy=$pos[1]
    $wdiff=$width-$oldwidth
    $hdiff=$height-$oldheight
    $j=0
    $i=0
    $wStep=$step
    $hStep=$step
    If $wdiff < 0 then $wStep = - $wStep
    If $hdiff < 0 then $hStep = - $hStep
    while Abs($i) <= Abs($wdiff) Or Abs($j) <= Abs($hdiff)
    If $i <= Abs($wdiff) Then $i += $wStep
    If $j <= Abs($hdiff) Then $j += $hStep
    WinMove($sTitle,"",$oldx,$oldy,$oldwidth+$i,$oldheight+$j)
    WEnd
    Return $pos
    EndFunc
    Func _WinFX_FlashDesktop($iSpeed=3,$hColor=0xffffff)
    ;Remarks: Don't use AdLib with this
    GUICreate("Flash",@DesktopWidth,@DesktopHeight,0,0,0x80000000,0x00000080)
    GUISetBkColor($hColor)
    WinSetTrans("Flash","",240)
    GUISetState()
    For $i=100 To 255 step 5
    WinSetTrans("Flash","",$i)
    Next
    For $i=255 To 0 step -$iSpeed
    WinSetTrans("Flash","",$i)
    Next
    if not @error then return true
    EndFunc
    Func _WinFX_CloseDesktop($iSleep=1000)
    $guieins=GUICreate("CloseDesktop.1",@DesktopWidth,0,0,0,0x80000000,BitOr(0x00000080,0x00000008))
    $guizwei=GUICreate("CloseDesktop.2",@DesktopWidth,0,0,@DesktopHeight,0x80000000,BitOr(0x00000080,0x00000008))
    GUISetBkColor(0x000000,$guieins)
    GUISetBkColor(0x000000,$guizwei)
    GUISetState(@SW_SHOW,$guieins)
    GUISetState(@SW_SHOW,$guizwei)
    For $i=1 To @DesktopHeight
    WinMove("CloseDesktop.1","",0,0,@DesktopWidth,$i)
    WinMove("CloseDesktop.2","",0,(@DesktopHeight)-$i,@DesktopWidth,$i)
    Next
    sleep($iSleep)
    GUIDelete($guieins)
    GUIDelete($guizwei)
    EndFunc
    ;EXAMPLE
    $old=_WinFX_ResizeWindow("Portal",1,1,20)
    $old=_WinFX_ResizeWindow("Portal",$old[2],$old[3],20)

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

    _WinFX_CloseDesktop()
    sleep(1000)
    _WinFX_FlashDesktop(1)

    [/autoit]

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

    Einmal editiert, zuletzt von L3viathan2142 (27. Januar 2009 um 21:56)

    • Offizieller Beitrag

    In Zeile 60 muß es nicht

    [autoit]

    WinFX_FlashDesktop(1)

    [/autoit]


    sondern

    [autoit]

    _WinFX_FlashDesktop(1)

    [/autoit]


    heißen.

  • Thx Raupi.
    Bugfixed (Falsche Verkleinerung beim Schrumpfen)

    Spoiler anzeigen
    [autoit]

    Func _WinFX_ResizeWindow($sWindow,$width, $height,$step=5)
    $sTitle=WinGetTitle($sWindow)
    $sText=WinGetText($sWindow)
    $hHandle=WinGetHandle($sWindow)
    $pos=WinGetPos($sTitle)
    If not IsArray($pos) Then return false
    $oldwidth=$pos[2]
    $oldheight=$pos[3]
    $oldx=$pos[0]
    $oldy=$pos[1]
    $wdiff=$width-$oldwidth
    $hdiff=$height-$oldheight
    $j=0
    $i=0
    $wStep=$step
    $hStep=$step
    If $wdiff < 0 then $wStep = - $wStep
    If $hdiff < 0 then $hStep = - $hStep
    while Abs($i) <= Abs($wdiff) Or Abs($j) <= Abs($hdiff)
    If Abs($i) <= Abs($wdiff) Then $i += $wStep
    If Abs($j) <= Abs($hdiff) Then $j += $hStep
    MsgBox(0,"","newwidth=" & $oldwidth+$i & @CRLF & "newheight=" & $oldheight+$j & @CRLF & "i=" & $i)
    WinMove($sTitle,"",$oldx,$oldy,$oldwidth+$i,$oldheight+$j)
    WEnd
    Return $pos
    EndFunc
    Func _WinFX_FlashDesktop($iSpeed=3,$hColor=0xffffff)
    ;Remarks: Don't use AdLib with this
    GUICreate("Flash",@DesktopWidth,@DesktopHeight,0,0,0x80000000,0x00000080)
    GUISetBkColor($hColor)
    WinSetTrans("Flash","",240)
    GUISetState()
    For $i=100 To 255 step 5
    WinSetTrans("Flash","",$i)
    Next
    For $i=255 To 0 step -$iSpeed
    WinSetTrans("Flash","",$i)
    Next
    if not @error then return true
    EndFunc
    Func _WinFX_CloseDesktop($iSleep=1000)
    $guieins=GUICreate("CloseDesktop.1",@DesktopWidth,0,0,0,0x80000000,BitOr(0x00000080,0x00000008))
    $guizwei=GUICreate("CloseDesktop.2",@DesktopWidth,0,0,@DesktopHeight,0x80000000,BitOr(0x00000080,0x00000008))
    GUISetBkColor(0x000000,$guieins)
    GUISetBkColor(0x000000,$guizwei)
    GUISetState(@SW_SHOW,$guieins)
    GUISetState(@SW_SHOW,$guizwei)
    For $i=1 To @DesktopHeight
    WinMove("CloseDesktop.1","",0,0,@DesktopWidth,$i)
    WinMove("CloseDesktop.2","",0,(@DesktopHeight)-$i,@DesktopWidth,$i)
    Next
    sleep($iSleep)
    GUIDelete($guieins)
    GUIDelete($guizwei)
    EndFunc
    ;EXAMPLE
    $old=_WinFX_ResizeWindow("""WinFX",500,500,20)
    $old=_WinFX_ResizeWindow("""WinFX",$old[2],$old[3],20)

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

    _WinFX_CloseDesktop()
    sleep(1000)
    _WinFX_FlashDesktop(1)

    [/autoit]

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Find ich super ^^

    Aber du solltest auch eine _WinFX_OpenDesktop Funktion machen...

    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

    Einmal editiert, zuletzt von H2112 (28. April 2009 um 20:37)

    • Offizieller Beitrag

    Und was stellst du dir unter der Function _WinFX_OpenDesktop vor ? Was soll die machen ?

  • Die Funktion soll die Funktion _WinFX_CloseDesktop ergänzen, indem sie genau das gegenteil von _WinFX_CloseDesktop macht.

    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

    • Offizieller Beitrag

    Hier hast du die Function :

    Spoiler anzeigen
    [autoit]

    Func _WinFX_OpenDesktop($iSleep=1000)
    $guieins=GUICreate("CloseDesktop.1",@DesktopWidth,0,0,0,0x80000000,BitOr(0x00000080,0x00000008))
    $guizwei=GUICreate("CloseDesktop.2",@DesktopWidth,0,0,@DesktopHeight,0x80000000,BitOr(0x00000080,0x00000008))
    GUISetBkColor(0x000000,$guieins)
    GUISetBkColor(0x000000,$guizwei)
    GUISetState(@SW_SHOW,$guieins)
    GUISetState(@SW_SHOW,$guizwei)
    For $i=@DesktopHeight to 1 step -1
    WinMove("CloseDesktop.1","",0,0,@DesktopWidth,$i)
    WinMove("CloseDesktop.2","",0,(@DesktopHeight)-$i,@DesktopWidth,$i)
    Next
    sleep($iSleep)
    GUIDelete($guieins)
    GUIDelete($guizwei)
    EndFunc

    [/autoit]
  • thx...
    Funktioniert super ^^

    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

  • Ich hab das mal ein bisschen umgeschrieben :) Hoffe du bist mir nicht böse...

    Spoiler anzeigen
    [autoit]

    HotKeySet("{F1}", "_Exit")

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

    $guieins = GUICreate("CloseDesktop.1", @DesktopWidth, 0, 0, 0, 0x80000000, BitOr(0x00000080, 0x00000008))
    GUISetState(@SW_SHOW, $guieins)
    GUISetBkColor(0x000000,$guieins)
    $guizwei = GUICreate("CloseDesktop.2", @DesktopWidth, 0, 0, @DesktopHeight, 0x80000000, BitOr(0x00000080, 0x00000008))
    GUISetState(@SW_SHOW, $guizwei)
    GUISetBkColor(0x000000,$guizwei)

    $Flash = GUICreate("Flash", @DesktopWidth, @DesktopHeight, 0, 0, 0x80000000, 0x00000080)
    WinSetTrans("Flash", "", 0)
    GUISetState(@SW_HIDE)

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

    Func _WinFX_ResizeWindow($sWindow,$width, $height,$step=5)
    $sTitle = WinGetTitle($sWindow)
    $sText = WinGetText($sWindow)
    $hHandle = WinGetHandle($sWindow)
    $pos = WinGetPos($sTitle)
    If not IsArray($pos) Then return false
    $oldwidth=$pos[2]
    $oldheight=$pos[3]
    $oldx=$pos[0]
    $oldy=$pos[1]
    $wdiff=$width-$oldwidth
    $hdiff=$height-$oldheight
    $j=0
    $i=0
    $wStep=$step
    $hStep=$step
    If $wdiff < 0 then $wStep = - $wStep
    If $hdiff < 0 then $hStep = - $hStep
    while Abs($i) <= Abs($wdiff) Or Abs($j) <= Abs($hdiff)
    If Abs($i) <= Abs($wdiff) Then $i += $wStep
    If Abs($j) <= Abs($hdiff) Then $j += $hStep
    MsgBox(0,"","newwidth=" & $oldwidth+$i & @CRLF & "newheight=" & $oldheight+$j & @CRLF & "i=" & $i)
    WinMove($sTitle,"",$oldx,$oldy,$oldwidth+$i,$oldheight+$j)
    WEnd
    Return $pos
    EndFunc

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

    Func _WinFX_FlashDesktop($Speed, $Color)
    If $Color = 0 Then
    $Color = 0xFFFFFF
    EndIf
    GUISetBkColor($Color)
    GUISetState(@SW_SHOW)
    For $i = 0 To 255 step $Speed
    WinSetTrans("Flash", "", $i)
    Next

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

    For $i=255 To 0 step -$Speed
    WinSetTrans("Flash","",$i)
    Next

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

    If Not @error Then
    Return True
    Else
    Return False
    EndIf
    GUISetState(@SW_HIDE)
    EndFunc

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

    Func _WinFX_CloseDesktop()
    For $i=1 To @DesktopHeight Step 1
    WinMove("CloseDesktop.1","",0,0,@DesktopWidth,$i)
    WinMove("CloseDesktop.2","",0,(@DesktopHeight)-$i,@DesktopWidth,$i)
    Next
    EndFunc
    Func _WinFX_OpenDesktop()
    For $i=@DesktopHeight to 1 step -1
    WinMove("CloseDesktop.1","",0,0,@DesktopWidth,$i)
    WinMove("CloseDesktop.2","",0,(@DesktopHeight)-$i,@DesktopWidth,$i)
    Next
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

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

    ;EXAMPLE
    ;~ $old=_WinFX_ResizeWindow("""WinFX",500,500,20)
    ;~ $old=_WinFX_ResizeWindow("""WinFX",$old[2],$old[3],20)

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

    _WinFX_CloseDesktop()
    _WinFX_OpenDesktop()
    Sleep(1000)
    While 1
    $zufall = Random(1,7,1)
    If $zufall = 1 Then
    _WinFX_FlashDesktop(10, "0xFF0000")
    ElseIf $zufall = 2 Then
    _WinFX_FlashDesktop(10, "0x00FF00")
    ElseIf $zufall = 3 Then
    _WinFX_FlashDesktop(10, "0x0000FF")
    ElseIf $zufall = 4 Then
    _WinFX_FlashDesktop(10, "0xFF00FF")
    ElseIf $zufall = 5 Then
    _WinFX_FlashDesktop(10, "0xFFFF00")
    ElseIf $zufall = 6 Then
    _WinFX_FlashDesktop(10, "0x00FFFF")
    ElseIf $zufall = 7 Then
    _WinFX_FlashDesktop(10, "0xFFFFFF")
    EndIf
    WEnd

    [/autoit]

    PS: Für die dies nicht gesehen haben, mit F1 beendet man ^^

    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

  • ich hab sie aber trotzdem drinnen gelassen ^^ Und das sollte nur als Beispiel dienen ;)

    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

  • Du kopierst dir den Inhalt vom Spoiler im ersten Post, packst ihn in eine Datei namens WinFX.au3 und tust die in den Includes-Ordner (z.B.: C:\Programme\AutoIt3\SciTe\Includes)
    Beispiel zum aufrufen:

    [autoit]


    #include <WinFX.au3>
    ;bla
    Msgbox(0,"","programm beendet sich jetzt")
    _WinFX_FlashDesktop()
    Exit

    [/autoit]

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.