Eine gute animation wäre auch, wenn man ein sich schließendes Auge machen würde. Hätte den gleichen Effekt wie das ausblenden
"WinFX"-UDF
-
-
Kannste ja mal machen. Ich hab bis jetzt nicht mit GDIPlus oder Irrlicht gearbeitet, wenn dus schaffst, adde ich es gern
-
Ich schau was ich machen kann
-
Ich habs Also mal das Auge:
Spoiler anzeigen
[autoit]#include <GuiConstants.au3>
[/autoit] [autoit][/autoit] [autoit]$my_gui = GUICreate("MyGUI", @DesktopWidth, @DesktopHeight, 0, 0, 0x80000000, BitOR(0x00000080, 0x00000008))
[/autoit] [autoit][/autoit] [autoit]
GUISetBkColor(0x000000, $my_gui)_GuiHole($my_gui, @DesktopWidth/16, @DesktopHeight/8, @DesktopWidth/1.15, @DesktopHeight/1.30)
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW)While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case Else
;;;
EndSelect
WEnd
ExitFunc _GuiHole($h_win, $i_x, $i_y, $i_sizew, $i_sizeh)
[/autoit]
Dim $pos, $outer_rgn, $inner_rgn, $wh, $combined_rgn, $ret
$pos = WinGetPos($h_win)
$outer_rgn = DllCall("gdi32.dll", "long", "CreateRectRgn", "long", 0, "long", 0, "long", $pos[2], "long", $pos[3])
If IsArray($outer_rgn) Then
$inner_rgn = DllCall("gdi32.dll", "long", "CreateEllipticRgn", "long", $i_x, "long", $i_y, "long", $i_x + $i_sizew, "long", $i_y + $i_sizeh)
If IsArray($inner_rgn) Then
$combined_rgn = DllCall("gdi32.dll", "long", "CreateRectRgn", "long", 0, "long", 0, "long", 0, "long", 0)
If IsArray($combined_rgn) Then
DllCall("gdi32.dll", "long", "CombineRgn", "long", $combined_rgn[0], "long", $outer_rgn[0], "long", $inner_rgn[0], "int", 4)
$ret = DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $h_win, "long", $combined_rgn[0], "int", 1)
If $ret[0] Then
Return 1
Else
Return 0
EndIf
Else
Return 0
EndIf
Else
Return 0
EndIf
Else
Return 0
EndIf
EndFunc ;==>_GuiHoleThx an Mega
-
- Offizieller Beitrag
Wenn du es noch zum schließen bekommst, dann ist es ein guter Effekt. Viel Spaß beim basteln .
-
Edit:
Ich hab die UDF mal zusammengefasst und noch ein Beispiel hinzugefügt.WinFX
[autoit='WinFX']Global $WinFX_EyeAnzahl = @DesktopWidth / 2
Global $WinFX_EyeEllipse[$WinFX_EyeAnzahl + 1]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
Func _WinFXCloseDesktop_Eye()
$my_gui = GUICreate("MyGUI", @DesktopWidth, @DesktopHeight, 0, 0, 0x80000000, BitOR( 0x00000008, 0x00080000, 0x2000000))
GUISetBkColor(0x000000)
GUISetState(@SW_SHOW)For $i = 1 To $WinFX_EyeAnzahl - 1 Step + 1
$WinFX_EyeEllipse[$i] = _DrawTransparentEllipse ($my_gui, @DesktopWidth/16, @DesktopHeight/8 + $i / 2, @DesktopWidth/1.15, @DesktopHeight/1.30 - $i, 255)
Sleep (5)
GUIDelete ($WinFX_EyeEllipse[$i-1])
Next
EndFunc
Func _WinFXOpenDesktop_Eye()
$my_gui = GUICreate("MyGUI", @DesktopWidth, @DesktopHeight, 0, 0, 0x80000000, BitOR( 0x00000008, 0x00080000, 0x2000000))
GUISetBkColor(0x000000)
GUISetState(@SW_SHOW)For $i = $WinFX_EyeAnzahl - 1 To 1 Step -1
$WinFX_EyeEllipse[$i] = _DrawTransparentEllipse ($my_gui, @DesktopWidth/16, @DesktopHeight/8 + $i / 2, @DesktopWidth/1.15, @DesktopHeight/1.30 - $i, 255)
GUIDelete ($WinFX_EyeEllipse[$i+1])
Next
EndFunc
Func _DrawTransparentEllipse($hwnd, $x,$y,$w,$h,$Transparency=255)
$Child = GUICreate ( "", $w, $h, $x, $y, 0x40000000, -1, $hwnd )
_WinAPI_SetLayeredWindowAttributes($hwnd, 0xABCDEF, $Transparency)
GUISetBkColor ( 0xABCDEF, $Child )
_GuiRoundCorners ( $Child, 0, 0, $w, $h)
GUISetState()
Return $Child
EndFunc
Func _GuiRoundCorners($hWnd, $x1, $y1, $x3, $y3)
Local $pos, $ret, $ret2
$pos = WinGetPos($hWnd)
$ret = DllCall('gdi32.dll', 'long', 'CreateRoundRectRgn', 'long', $x1, 'long', $y1, 'long', $pos[2], 'long', $pos[3], 'long', $x3, 'long', $y3)
If $ret[0] Then
$ret2 = DllCall('user32.dll', 'long', 'SetWindowRgn', 'hwnd', $hWnd, 'long', $ret[0], 'int', 1)
If $ret2[0] Then
Return 1
Else
Return 0
EndIf
Else
Return 0
EndIf
EndFunc
Func _WinAPI_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $dwFlages = 0x03, $isColorRef = False)
; progandy
If $dwFlages = Default Or $dwFlages = "" Or $dwFlages < 0 Then $dwFlages = 0x03
If Not $isColorRef Then
$i_transcolor = Hex(String($i_transcolor), 6)
$i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
EndIf
Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $dwFlages)
Select
Case @error
Return SetError(@error, 0, 0)
Case $Ret[0] = 0
Return SetError(4, __WinAPI_GetLastError(), 0)
Case Else
Return 1
EndSelect
EndFunc ;==>_WinAPI_SetLayeredWindowAttributes
Func __WinAPI_GetLastError()
Local $aResult$aResult = DllCall("Kernel32.dll", "int", "GetLastError")
[/autoit]
If @error Then Return SetError(@error, 0, 0)
Return $aResult[0]
EndFuncBeispiel
[autoit='Beispiel']#include <WinFX.au3>
_WinFXCloseDesktop_Eye()
Sleep(1000)
_WinFXOpenDesktop_Eye()Sleep(5000)
[/autoit]
ExitLG,
H2112 -
Echt super arbeit !
Da ich mich anfangs sofort für das Close/Open Desktop interessiert hab habe ich mir gleich mal was gebastelt was bei mir im Autostart zu finden ist (Mein Bruder geht gern mal einfach an mein Laptop ...):Spoiler anzeigen
[autoit]Break(0)
[/autoit]
HotKeySet("{END}","Open")
$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
While 1
Sleep(100)
WEnd
Func Open()
For $i=@DesktopHeight to 1 step -1
WinMove("CloseDesktop.1","",0,0,@DesktopWidth,$i)
WinMove("CloseDesktop.2","",0,(@DesktopHeight)-$i,@DesktopWidth,$i)
Next
GUIDelete($guieins)
GUIDelete($guizwei)
Exit
EndFunc -
Ganz nett, aber nicht sicher
Drück mal Win+R, tippe cmd /c tskill autoit3.exe, ENTER
Hehehe ;D -
Wenn man:
a) die AutoItExe umbenennt
b) das Programm kompriliert
kann man es nicht mehr so einfach herausfinden.
MfG -
Bei mir im Haus hat niemand (außer mir xD) Ahnung vom PC und daher muss es nicht ausbruchssicher sein, für den Fall dass ich selbst mal den Hotkey vergesse
-
Ich habe die Datei ein bischen verbessert.
Beispiel:
[autoit]_CloseDesktop_Typ1(0xFF0000, 0xFF0000, 2)
[/autoit][autoit][/autoit][autoit]
Sleep(500)
_OpenDesktop_Typ1(1, 2)
Sleep(500)
_CloseDesktop_Typ1(0xFF0000, 0xFF0000, 2)
Sleep(500)
_OpenDesktop_Typ2(1, 2)
Sleep(500)
_CloseDesktop_Typ2(0xFF0000, 0xFF0000, 2)
Sleep(500)
_OpenDesktop_Typ2(2, 2)
Sleep(500)
_CloseDesktop_Typ2(0xFF0000, 0xFF0000, 2)
Sleep(500)
_OpenDesktop_Typ1(2, 2)Sleep(500)
[/autoit][autoit][/autoit][autoit]_SperreTaskleiste(0xFF0000, 1, 2)
[/autoit]
Sleep(500)
_EntsperreTaskleiste(1, 2)
Sleep(500)
_SperreTaskleiste(0xFF0000, 1, 2)
Sleep(500)
_EntsperreTaskleiste(0, 2)
Sleep(500)
_SperreTaskleiste(0xFF0000, 0, 2)
Sleep(500)
_EntsperreTaskleiste(1, 2)
Sleep(500)
_SperreTaskleiste(0xFF0000, 0, 2)
Sleep(500)
_EntsperreTaskleiste(0, 2) -