Ich hab mal eine kleine UDF geschrieben, die ein Fenster mit beliebigen Titel, Text, Link, Anzeigedauer und Farbe aufscheinen lässt.
Parameter
_MiniGUI:
$flag - Richtung aus der die MiniGUI kommen soll (0 = unten, 1 = rechts, 2 = oben, 3 = links, 4 = Aus allen Ecken (MiniGUI wird in der Mitte angezeigt))
$Titel = Titel des MiniGUIs
$Text = Text des MiniGUIs (Wenn der Text zu lange ist mal mit @CRLF versuchen ;))
$Link = Link zu einer beliebigen Seite
$Wait = Die Zeit, die die MiniGUI warten soll, bis sie verschwindet
$Color1 = Hintergrundfarbe des MiniGUIs
$Color2 = Text- und Linienfarbe des MiniGUIs
_MiniGUI_Bubble:
$flag - Richtung aus der die MiniGUI kommen soll (0 = unten, 1 = rechts, 2 = oben, 3 = links, 4 = Aus allen Ecken (MiniGUI wird in der Mitte angezeigt))
$Titel = Titel des MiniGUIs
$Text = Text des MiniGUIs (Wenn der Text zu lange ist mal mit @CRLF versuchen ;))
$Link = Link zu einer beliebigen Seite
$Wait = Die Zeit, die die MiniGUI warten soll, bis sie verschwindet
$Color1 = Hintergrundfarbe des MiniGUIs
$Color2 = Text- und Linienfarbe des MiniGUIs
_MiniGUI
Func _MiniGUI($flag, $Titel, $Text, $Link, $Wait, $Color1, $Color2)
[/autoit] [autoit][/autoit] [autoit]Local $MINI_GUI_dif = 0, $MINI_GUI_Transwert = 255, $taskbar_pos = WinGetPos("[class:Shell_TrayWnd]")
[/autoit] [autoit][/autoit] [autoit]If $flag = 0 Then
$MINI_GUI = GUICreate("MINI_GUI", 250, 140, @DesktopWidth - 270, @DesktopHeight, 0x80000000, 0x00000080)
GUISetState(@SW_SHOW, $MINI_GUI)
GUISetBkColor($Color1, $MINI_GUI)
ElseIf $flag = 1 Then
$MINI_GUI = GUICreate("MINI_GUI", 250, 140, @DesktopWidth, @DesktopHeight - 160 - $taskbar_pos[3], 0x80000000, 0x00000080)
GUISetState(@SW_SHOW, $MINI_GUI)
GUISetBkColor($Color1, $MINI_GUI)
ElseIf $flag = 2 Then
$MINI_GUI = GUICreate("MINI_GUI", 250, 140, @DesktopWidth -250 , - 140, 0x80000000, 0x00000080)
GUISetState(@SW_SHOW, $MINI_GUI)
GUISetBkColor($Color1, $MINI_GUI)
ElseIf $flag = 3 Then
$MINI_GUI = GUICreate("MINI_GUI", 250, 140, -250 , @DesktopHeight - 140 - $taskbar_pos[3], 0x80000000, 0x00000080)
GUISetState(@SW_SHOW, $MINI_GUI)
GUISetBkColor($Color1, $MINI_GUI)
ElseIf $flag = 4 Then
$MINI_GUI_1 = GUICreate("1_MINI_GUI", 250, 140, @DesktopWidth, -140, 0x80000000, 0x00000080)
GUISetState(@SW_SHOW, $MINI_GUI_1)
GUISetBkColor($Color1, $MINI_GUI_1)
$MINI_GUI_2 = GUICreate("2_MINI_GUI", 250, 140, -250, -140, 0x80000000, 0x00000080)
GUISetState(@SW_SHOW, $MINI_GUI_2)
GUISetBkColor($Color1, $MINI_GUI_2)
$MINI_GUI_3 = GUICreate("3_MINI_GUI", 250, 140, -250, @DesktopHeight, 0x80000000, 0x00000080)
GUISetState(@SW_SHOW, $MINI_GUI_3)
GUISetBkColor($Color1, $MINI_GUI_3)
$MINI_GUI = GUICreate("MINI_GUI", 250, 140, @DesktopWidth, @DesktopHeight, 0x80000000, 0x00000080)
GUISetState(@SW_SHOW, $MINI_GUI)
GUISetBkColor($Color1, $MINI_GUI)
EndIf
$MINI_GUI_Titel = GUICtrlCreateLabel($Titel, 50, 20, 150)
GUICtrlSetFont($MINI_GUI_Titel, 16)
GUICtrlSetColor($MINI_GUI_Titel, $Color2)
$MINI_GUI_Text = GUICtrlCreateLabel($Text, 50, 65)
GUICtrlSetColor($MINI_GUI_Text, $Color2)
$MINI_GUI_Link = GUICtrlCreateLabel($Link, 50, 110, 150, 20)
GUICtrlSetColor($MINI_GUI_Link, 0x0000FF)
GUICtrlSetFont($MINI_GUI_Link, 10, 400, 4)
GUICtrlSetCursor($MINI_GUI_Link, 0)
$MINI_GUI_Line1 = GUICtrlCreateLabel("", 0, 0, 250, 1)
GUICtrlSetColor($MINI_GUI_Line1, $Color2)
GUICtrlSetBkColor($MINI_GUI_Line1, $Color2)
$MINI_GUI_Line2 = GUICtrlCreateLabel("", 0, 0, 1, 140)
GUICtrlSetColor($MINI_GUI_Line2, $Color2)
GUICtrlSetBkColor($MINI_GUI_Line2, $Color2)
If $flag = 0 Or $flag = 3 Or $flag = 4 Then
$MINI_GUI_Line3 = GUICtrlCreateLabel("", 249, 0, 1, 140)
GUICtrlSetColor($MINI_GUI_Line3, $Color2)
GUICtrlSetBkColor($MINI_GUI_Line3, $Color2)
ElseIf $flag = 1 Or $flag = 2 Then
$MINI_GUI_Line3 = GUICtrlCreateLabel("", 0, 139, 250, 1)
GUICtrlSetColor($MINI_GUI_Line3, $Color2)
GUICtrlSetBkColor($MINI_GUI_Line3, $Color2)
EndIf
If $flag = 4 Then
$MINI_GUI_Line4 = GUICtrlCreateLabel("", 0, 139, 250, 1)
GUICtrlSetColor($MINI_GUI_Line4, $Color2)
GUICtrlSetBkColor($MINI_GUI_Line4, $Color2)
EndIf
$MINI_GUI_LineMiddle = GUICtrlCreateLabel("", 25, 50, 200, 3)
GUICtrlSetColor($MINI_GUI_LineMiddle, $Color2)
GUICtrlSetBkColor($MINI_GUI_LineMiddle, $Color2)
If $flag = 4 Then
WinSetOnTop($MINI_GUI_1, "", 1)
WinSetOnTop($MINI_GUI_2, "", 1)
WinSetOnTop($MINI_GUI_3, "", 1)
WinSetOnTop($MINI_GUI, "", 1)
Else
WinSetOnTop($MINI_GUI, "", 1)
EndIf
If $flag = 0 Or $flag = 3 Then
WinMove("MINI_GUI", "", @DesktopWidth - 270, @DesktopHeight - 140 - $taskbar_pos[3], 250, 140, 5)
ElseIf $flag = 1 Or $flag = 2 Then
WinMove("MINI_GUI", "", @DesktopWidth - 250, @DesktopHeight - 160 - $taskbar_pos[3], 250, 140, 5)
ElseIf $flag = 4 Then
WinMove("3_MINI_GUI", "", @DesktopWidth/2 - 125, @DesktopHeight/2 - 70 - $taskbar_pos[3], 250, 140, 5)
WinMove("2_MINI_GUI", "", @DesktopWidth/2 - 125, @DesktopHeight/2 - 70 - $taskbar_pos[3], 250, 140, 5)
WinMove("1_MINI_GUI", "", @DesktopWidth/2 - 125, @DesktopHeight/2 - 70 - $taskbar_pos[3], 250, 140, 5)
WinMove("MINI_GUI", "", @DesktopWidth/2 - 125, @DesktopHeight/2 - 70 - $taskbar_pos[3], 250, 140, 5)
GUIDelete($MINI_GUI_1)
GUIDelete($MINI_GUI_2)
GUIDelete($MINI_GUI_3)
EndIf
$MINI_GUI_begin = TimerInit()
Do
$MINI_GUI_dif = TimerDiff($MINI_GUI_begin)
$aMousePos1 = MouseGetPos()
$aWinPos1 = WinGetPos(WinGetTitle($MINI_GUI))
If $MINI_GUI_dif > $Wait / 5 And $MINI_GUI_dif < $Wait / 4 Then
Do
WinSetTrans("MINI_GUI", "", $MINI_GUI_Transwert)
Sleep(10)
$MINI_GUI_Transwert = $MINI_GUI_Transwert - 1
If $MINI_GUI_Transwert < 200 Then
$MINI_GUI_Transwert = 200
EndIf
Until $MINI_GUI_Transwert = 200
EndIf
If $aMousePos1[0] > $aWinPos1[0] And $aMousePos1[0] < $aWinPos1[0] + 250 And $aMousePos1[1] > $aWinPos1[1] And $aMousePos1[1] < $aWinPos1[1] + 140 Then
$MINI_GUI_begin = TimerInit()
If $MINI_GUI_Transwert < 255 Then
Do
WinSetTrans("MINI_GUI", "", $MINI_GUI_Transwert)
Sleep(10)
$MINI_GUI_Transwert = $MINI_GUI_Transwert + 1
Until $MINI_GUI_Transwert = 255
EndIf
EndIf
$nMsg = GUIGetMsg()
Switch $nMsg
Case $MINI_GUI_Link
ShellExecute($Link)
EndSwitch
Until $MINI_GUI_dif > $Wait
Do
WinSetTrans("MINI_GUI", "", $MINI_GUI_Transwert)
Sleep(10)
$MINI_GUI_Transwert = $MINI_GUI_Transwert - 1
Until $MINI_GUI_Transwert = 0
GUIDelete($MINI_GUI)
EndFunc ;==>_MiniGUI
Func _MiniGUI_Bubble($flag, $Titel, $Text, $Link, $Wait, $Color1, $Color2)
Local $MINI_GUI_dif = 0, $MINI_GUI_Transwert = 255, $taskbar_pos = WinGetPos("[class:Shell_TrayWnd]")
If $flag = 0 Then
$MINI_GUI = GUICreate("MINI_GUI", 250, 140, @DesktopWidth - 270, @DesktopHeight, 0x80000000, 0x00000080)
$ret5 = DllCall('gdi32.dll', 'long', 'CreateRoundRectRgn', 'long', 0, 'long', 0, 'long', 250, 'long', 140, 'long', 250, 'long', 140)
If $ret5[0] Then
$ret6 = DllCall('user32.dll', 'long', 'SetWindowRgn', 'hwnd', $MINI_GUI, 'long', $ret5[0], 'int', 1)
EndIf
GUISetState(@SW_SHOW, $MINI_GUI)
GUISetBkColor($Color1, $MINI_GUI)
ElseIf $flag = 1 Then
$MINI_GUI = GUICreate("MINI_GUI", 250, 140, @DesktopWidth, @DesktopHeight - 160 - $taskbar_pos[3], 0x80000000, 0x00000080)
$ret5 = DllCall('gdi32.dll', 'long', 'CreateRoundRectRgn', 'long', 0, 'long', 0, 'long', 250, 'long', 140, 'long', 250, 'long', 140)
If $ret5[0] Then
$ret6 = DllCall('user32.dll', 'long', 'SetWindowRgn', 'hwnd', $MINI_GUI, 'long', $ret5[0], 'int', 1)
EndIf
GUISetState(@SW_SHOW, $MINI_GUI)
GUISetBkColor($Color1, $MINI_GUI)
ElseIf $flag = 2 Then
$MINI_GUI = GUICreate("MINI_GUI", 250, 140, @DesktopWidth - 270, - 140, 0x80000000, 0x00000080)
$ret5 = DllCall('gdi32.dll', 'long', 'CreateRoundRectRgn', 'long', 0, 'long', 0, 'long', 250, 'long', 140, 'long', 250, 'long', 140)
If $ret5[0] Then
$ret6 = DllCall('user32.dll', 'long', 'SetWindowRgn', 'hwnd', $MINI_GUI, 'long', $ret5[0], 'int', 1)
EndIf
GUISetState(@SW_SHOW, $MINI_GUI)
GUISetBkColor($Color1, $MINI_GUI)
ElseIf $flag = 3 Then
$MINI_GUI = GUICreate("MINI_GUI", 250, 140, - 250, @DesktopHeight - 160 - $taskbar_pos[3], 0x80000000, 0x00000080)
$ret5 = DllCall('gdi32.dll', 'long', 'CreateRoundRectRgn', 'long', 0, 'long', 0, 'long', 250, 'long', 140, 'long', 250, 'long', 140)
If $ret5[0] Then
$ret6 = DllCall('user32.dll', 'long', 'SetWindowRgn', 'hwnd', $MINI_GUI, 'long', $ret5[0], 'int', 1)
EndIf
GUISetState(@SW_SHOW, $MINI_GUI)
GUISetBkColor($Color1, $MINI_GUI)
ElseIf $flag = 4 Then
$MINI_GUI_1 = GUICreate("1_MINI_GUI", 250, 140, - 250, @DesktopHeight, 0x80000000, 0x00000080)
$ret7 = DllCall('gdi32.dll', 'long', 'CreateRoundRectRgn', 'long', 0, 'long', 0, 'long', 250, 'long', 140, 'long', 250, 'long', 140)
If $ret7[0] Then
$ret8 = DllCall('user32.dll', 'long', 'SetWindowRgn', 'hwnd', $MINI_GUI_1, 'long', $ret7[0], 'int', 1)
EndIf
GUISetState(@SW_SHOW, $MINI_GUI_1)
GUISetBkColor($Color1, $MINI_GUI_1)
$MINI_GUI_2 = GUICreate("2_MINI_GUI", 250, 140, - 250, - 140, 0x80000000, 0x00000080)
$ret9 = DllCall('gdi32.dll', 'long', 'CreateRoundRectRgn', 'long', 0, 'long', 0, 'long', 250, 'long', 140, 'long', 250, 'long', 140)
If $ret9[0] Then
$ret10 = DllCall('user32.dll', 'long', 'SetWindowRgn', 'hwnd', $MINI_GUI_2, 'long', $ret9[0], 'int', 1)
EndIf
GUISetState(@SW_SHOW, $MINI_GUI_2)
GUISetBkColor($Color1, $MINI_GUI_2)
$MINI_GUI_3 = GUICreate("3_MINI_GUI", 250, 140, @DesktopWidth, - 140, 0x80000000, 0x00000080)
$ret11 = DllCall('gdi32.dll', 'long', 'CreateRoundRectRgn', 'long', 0, 'long', 0, 'long', 250, 'long', 140, 'long', 250, 'long', 140)
If $ret11[0] Then
$ret12 = DllCall('user32.dll', 'long', 'SetWindowRgn', 'hwnd', $MINI_GUI_3, 'long', $ret11[0], 'int', 1)
EndIf
GUISetState(@SW_SHOW, $MINI_GUI_3)
GUISetBkColor($Color1, $MINI_GUI_3)
$MINI_GUI = GUICreate("MINI_GUI", 250, 140, @DesktopWidth, @DesktopHeight, 0x80000000, 0x00000080)
$ret5 = DllCall('gdi32.dll', 'long', 'CreateRoundRectRgn', 'long', 0, 'long', 0, 'long', 250, 'long', 140, 'long', 250, 'long', 140)
If $ret5[0] Then
$ret6 = DllCall('user32.dll', 'long', 'SetWindowRgn', 'hwnd', $MINI_GUI, 'long', $ret5[0], 'int', 1)
EndIf
GUISetState(@SW_SHOW, $MINI_GUI)
GUISetBkColor($Color1, $MINI_GUI)
EndIf
$Child1 = GUICreate ("Child1", 247, 137, 1, 1, 0x40000000, -1, $MINI_GUI)
GUISetBkColor ($Color1, $Child1)
$ret1 = DllCall('gdi32.dll', 'long', 'CreateRoundRectRgn', 'long', 1, 'long', 1, 'long', 247, 'long', 137, 'long', 247, 'long', 137)
If $ret1[0] Then
$ret2 = DllCall('user32.dll', 'long', 'SetWindowRgn', 'hwnd', $Child1, 'long', $ret1[0], 'int', 1)
EndIf
GUISetState()
$MINI_GUI_Titel = GUICtrlCreateLabel($Titel, 50, 20, 150, 30, 0x01)
GUICtrlSetFont($MINI_GUI_Titel, 16)
GUICtrlSetColor($MINI_GUI_Titel, $Color2)
$MINI_GUI_Text = GUICtrlCreateLabel($Text, 50, 65, 150, 40, 0x01)
GUICtrlSetColor($MINI_GUI_Text, $Color2)
$MINI_GUI_Link = GUICtrlCreateLabel($Link, 50, 110, 150, 20,0x01)
GUICtrlSetColor($MINI_GUI_Link, 0x0000FF)
GUICtrlSetFont($MINI_GUI_Link, 10, 400, 4)
GUICtrlSetCursor($MINI_GUI_Link, 0)
$MINI_GUI_LineMiddle = GUICtrlCreateLabel("", 25, 50, 200, 3)
GUICtrlSetColor($MINI_GUI_LineMiddle, $Color2)
GUICtrlSetBkColor($MINI_GUI_LineMiddle, $Color2)
$Child2 = GUICreate ("Child2", 250, 140, 0, 0, 0x40000000, -1, $MINI_GUI)
GUISetBkColor ($Color2, $Child2)
$ret3 = DllCall('gdi32.dll', 'long', 'CreateRoundRectRgn', 'long', 0, 'long', 0, 'long', 250, 'long', 140, 'long', 250, 'long', 140)
If $ret3[0] Then
$ret4 = DllCall('user32.dll', 'long', 'SetWindowRgn', 'hwnd', $Child2, 'long', $ret3[0], 'int', 1)
EndIf
GUISetState()
If $flag = 4 Then
WinSetOnTop($MINI_GUI_1, "", 1)
WinSetOnTop($MINI_GUI_2, "", 1)
WinSetOnTop($MINI_GUI_3, "", 1)
WinSetOnTop($MINI_GUI, "", 1)
Else
WinSetOnTop($MINI_GUI, "", 1)
EndIf
If $flag = 4 Then
WinMove("1_MINI_GUI", "", @DesktopWidth/2 - 125, @DesktopHeight/2 - 70 - $taskbar_pos[3], 250, 140, 5)
WinMove("2_MINI_GUI", "", @DesktopWidth/2 - 125, @DesktopHeight/2 - 70 - $taskbar_pos[3], 250, 140, 5)
WinMove("3_MINI_GUI", "", @DesktopWidth/2 - 125, @DesktopHeight/2 - 70 - $taskbar_pos[3], 250, 140, 5)
WinMove("MINI_GUI", "", @DesktopWidth/2 - 125, @DesktopHeight/2 - 70 - $taskbar_pos[3], 250, 140, 5)
GUIDelete($MINI_GUI_1)
GUIDelete($MINI_GUI_2)
GUIDelete($MINI_GUI_3)
Else
WinMove("MINI_GUI", "", @DesktopWidth - 270, @DesktopHeight - 160 - $taskbar_pos[3], 250, 140, 5)
EndIf
$MINI_GUI_begin = TimerInit()
Do
$MINI_GUI_dif = TimerDiff($MINI_GUI_begin)
$aMousePos1 = MouseGetPos()
$aWinPos1 = WinGetPos(WinGetTitle($MINI_GUI))
If $MINI_GUI_dif > $Wait / 5 And $MINI_GUI_dif < $Wait / 4 Then
Do
WinSetTrans("MINI_GUI", "", $MINI_GUI_Transwert)
Sleep(10)
$MINI_GUI_Transwert = $MINI_GUI_Transwert - 1
If $MINI_GUI_Transwert < 200 Then
$MINI_GUI_Transwert = 200
EndIf
Until $MINI_GUI_Transwert = 200
EndIf
If $aMousePos1[0] > $aWinPos1[0] And $aMousePos1[0] < $aWinPos1[0] + 250 And $aMousePos1[1] > $aWinPos1[1] And $aMousePos1[1] < $aWinPos1[1] + 140 Then
$MINI_GUI_begin = TimerInit()
If $MINI_GUI_Transwert < 255 Then
Do
WinSetTrans("MINI_GUI", "", $MINI_GUI_Transwert)
Sleep(10)
$MINI_GUI_Transwert = $MINI_GUI_Transwert + 1
Until $MINI_GUI_Transwert = 255
EndIf
EndIf
$nMsg = GUIGetMsg()
Switch $nMsg
Case $MINI_GUI_Link
ShellExecute($Link)
EndSwitch
Until $MINI_GUI_dif > $Wait
Do
WinSetTrans("MINI_GUI", "", $MINI_GUI_Transwert)
Sleep(10)
$MINI_GUI_Transwert = $MINI_GUI_Transwert - 1
Until $MINI_GUI_Transwert = 0
GUIDelete($MINI_GUI)
EndFunc ;==>_MiniGUI_Bubble
_MiniGUI Example
#include <MiniGUI.au3>
[/autoit] [autoit][/autoit] [autoit]_MiniGUI_Bubble(4, "Hallo Welt", "Hallo Welt", "www.h2112.webs.com", 10000, 0x000000, 0xFFFFFF)
_MiniGUI_Bubble(3, "Hallo Welt", "Hallo Welt", "www.h2112.webs.com", 10000, 0x000000, 0xFFFFFF)
_MiniGUI_Bubble(2, "Hallo Welt", "Hallo Welt", "www.h2112.webs.com", 10000, 0x000000, 0xFFFFFF)
_MiniGUI_Bubble(1, "Hallo Welt", "Hallo Welt", "www.h2112.webs.com", 10000, 0x000000, 0xFFFFFF)
_MiniGUI_Bubble(0, "Hallo Welt", "Hallo Welt", "www.h2112.webs.com", 10000, 0x000000, 0xFFFFFF)
_MiniGUI(4, "Hallo Welt", "Hallo Welt!", "www.autoit.de", 10000, 0x000000, 0xFFFFFF)
_MiniGUI(3, "Hallo Welt", "Hallo Welt!", "www.autoit.de", 10000, 0x000000, 0xFFFFFF)
_MiniGUI(2, "Hallo Welt", "Hallo Welt!", "www.autoit.de", 10000, 0x000000, 0xFFFFFF)
_MiniGUI(1, "Hallo Welt", "Hallo Welt!", "www.autoit.de", 10000, 0x000000, 0xFFFFFF)
_MiniGUI(0, "Hallo Welt", "Hallo Welt!", "www.autoit.de", 10000, 0x000000, 0xFFFFFF)
Edit: Thx für die Kommentare
Ich hab die UDF mal ein bisschen verbessert:
- Wenn man mit der Maus über die MiniGUI fährt, muss man wieder die angegebene zeit warten
- Die MiniGUI wird, wenn man nach 1/5 der angegeben Zeit nicht über die GUI fährt, leicht transparent
- Hintergrund- und Textfarbe ( Textfarbe = Linienfarbe) sind nun frei wählbar (thx an funkey für den Vorschlag)
- Die MiniGUI hat jetzt einen anklickbaren Link
- Die MiniGUI ist jetzt immer OnTop (Thx an GtaSpider)
- Die MiniGUI kann jetzt auch von rechts kommen ($flag = 1)
- Die MiniGUI ist jetzt immer relativ zur TaskLeiste (Thx an GtaSpider)
- Die MiniGUI kann jetzt auch von oben kommen ($flag = 2)
- Die MiniGUI kann jetzt auch von links kommen ($flag = 3)
- Die MiniGUI kann jetzt aus allen Ecken kommen ($flag = 4 (MiniGUI wird in der Mitte angezeigt))
- Neue Form hinzugefügt (_MiniGUI_Bubble)
- Richtungen für _MiniGUI_Bubble hinzugefügt (gleich wie bei _MiniGUI)
Bugs:
- Wenn $Wait über 10.000 ist, wird die GUI immer wieder total durchsichtig - BEHOBEN
- Die MiniGUI ist bei WinMove nicht im Vordergrund - BEHOBEN
- Wenn man mit der Maus unter die MiniGUI fährt, wird diese wieder voll sichtbar - BEHOBEN