Popup ICQ like

  • Ich würde gerne ein einfaches popup window erstellen, welches sich dann unten rechts befindet.
    Bis dahin hört es sich alles noch sehr einfach an, aber:

    -Das Popup soll immer oben liegen
    -Das Popup soll nicht in der Tasbar unten sichtbar sein
    -Das Popup soll nicht das aktive fenster sein

    Bisher habe ich einfach nur

    Guicreate($name,150,100,@DesktopWidth-160,@DesktopHeight-110,default,$WS_EX_TOOLWINDOW)

    verwendet, aber dann ist das popup immer das aktive fenster, was einem ziemlich nerven kann....

    Ist bestimmte eine kleinigkeit, aber ich bin zu dumm sie zu finden -.-

    Einmal editiert, zuletzt von Oger-Lord (9. März 2009 um 18:34)

  • Hmm ich weiss nicht ob du sowas suchst... habs auch noch nicht getestet nur in der hilfe was gefunden.

    $WS_POPUP

    anonsten für always on top: $WS_EX_TOPMOST

    mfg SiLenCa

    • Offizieller Beitrag

    Hallo

    Nicht getestet:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    ; Simple Example
    _TrayMessageBox("Tray Message Box", "This is a tray message box text" & @CRLF & @CRLF & " ...Thanks, Valuater... 8) ")

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

    Func _TrayMessageBox($TBTitle, $TBText, $TBwidth = 220, $TBheight = 100, $display_Time = 5000)
    $TBgui = GUICreate($TBTitle, $TBwidth, $TBheight, @DesktopWidth - ($TBwidth + 12), @DesktopHeight - ($TBheight + 53), $WS_POPUP, $WS_EX_TOOLWINDOW)
    $Status = GUICtrlCreateLabel($TBText, 20, 20)
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $TBgui, "int", 1000, "long", 0x00040008);slide-in
    GUISetState()
    Sleep($display_Time)
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $TBgui, "int", 1000, "long", 0x00050004);slide-out
    GUIDelete($TBgui)
    EndFunc ;==>_TrayMessageBox

    [/autoit]

    Mfg Spider

    Edit: Whpus.. "Mfg Spider" vergessen :D

  • GtaSpider : Nein, das Funktioniert eben so nicht. Dadurch hat sich bei mir gerade mein ganzes Windows aufgehängt....

    Außerdem ist mir der dritte Punkt

    Zitat

    -Das Popup soll nicht das aktive fenster sein

    sehr wichtig, da es einafch nur nervt wenn man für 5 sekunden nicht schreiben kann, ohne mit der Maus wieder auf das Fenster zu klicken.

    • Offizieller Beitrag

    Hallo

    Gut.. Dann probier mal folgendes. Bei mir hängt sich weder Windows auf, noch wird die GUI als aktiv (dank @SW_SHOWNOACTIVATE) angezeigt.

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    ; Simple Example
    _TrayMessageBox("Tray Message Box", "This is a tray message box text" & @CRLF & @CRLF & " ...Thanks, Valuater... 8) ")

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

    Func _TrayMessageBox($TBTitle, $TBText, $TBwidth = 220, $TBheight = 100, $display_Time = 5000)
    $TBgui = GUICreate($TBTitle, $TBwidth, $TBheight, @DesktopWidth - ($TBwidth + 12), @DesktopHeight - ($TBheight + 53), $WS_POPUP, $WS_EX_TOOLWINDOW)
    $Status = GUICtrlCreateLabel($TBText, 20, 20)
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $TBgui, "int", 1000, "long", 0x00040008);slide-in
    GUISetState(@SW_SHOWNOACTIVATE)
    Sleep($display_Time)
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $TBgui, "int", 1000, "long", 0x00050004);slide-out
    GUIDelete($TBgui)
    EndFunc ;==>_TrayMessageBox

    [/autoit]

    Mfg Spider

  • (wie ist aufeinmal das @SW_SHOWNOACTIVATE in dein Script gekommen? :P )

    Edit: Ok, das Popup sieht man jetzt auch nur noch wenn man auf dem Desktop ist und sich keine Anwendung davor befindet.

  • Da hat $WS_EX_TOPMOST gefehlt ;)

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>

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

    ;~ Sleep(5000)
    ; Simple Example
    _TrayMessageBox("Tray Message Box", "This is a tray message box text" & @CRLF & @CRLF & " ...Thanks, Valuater... 8) ")

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

    Func _TrayMessageBox($TBTitle, $TBText, $TBwidth = 220, $TBheight = 100, $display_Time = 5000)

    Local $windozeRect = DllStructCreate($tagRECT)
    Local $SPI_GETWORKAREA = 48
    _WinAPI_SystemParametersInfo($SPI_GETWORKAREA, 0, DllStructGetPtr($windozeRect), 0);
    Local $Bottom = DllStructGetData($windozeRect,4)
    Local $Right = DllStructGetData($windozeRect,3)

    $TBgui = GUICreate($TBTitle, $TBwidth, $TBheight, $Right - ($TBwidth ), $Bottom - ($TBheight), $WS_POPUP, $WS_EX_TOOLWINDOW+$WS_EX_TOPMOST)
    GUISetBkColor(0xFF0000)
    ;~ WinGetPos("
    $Status = GUICtrlCreateLabel($TBText, 20, 20)
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $TBgui, "int", 1000, "long", 0x00040008);slide-in
    GUISetState(@SW_SHOWNOACTIVATE)
    Sleep($display_Time)
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $TBgui, "int", 1000, "long", 0x00050004);slide-out
    GUIDelete($TBgui)
    EndFunc ;==>_TrayMessageBox

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

    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>

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

    ;~ Sleep(5000)
    ; Simple Example
    _TrayMessageBox("Tray Message Box", "This is a tray message box text" & @CRLF & @CRLF & " ...Thanks, Valuater... 8) ")

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

    Func _TrayMessageBox($TBTitle, $TBText, $TBwidth = 220, $TBheight = 100, $display_Time = 5000)

    Local $windozeRect = DllStructCreate($tagRECT)
    Local $SPI_GETWORKAREA = 48
    _WinAPI_SystemParametersInfo($SPI_GETWORKAREA, 0, DllStructGetPtr($windozeRect), 0);
    Local $Bottom = DllStructGetData($windozeRect,4)
    Local $Right = DllStructGetData($windozeRect,3)

    $TBgui = GUICreate($TBTitle, $TBwidth, $TBheight, $Right - ($TBwidth ), $Bottom - ($TBheight), $WS_POPUP, $WS_EX_TOOLWINDOW+$WS_EX_TOPMOST)
    GUISetBkColor(0xFF0000) ; <- GUICtrlCreatePic("bild.jpg",0,0)
    ;~ WinGetPos("
    $Status = GUICtrlCreateLabel($TBText, 20, 20)
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $TBgui, "int", 1000, "long", 0x00040008);slide-in
    GUISetState(@SW_SHOWNOACTIVATE)
    Sleep($display_Time)
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $TBgui, "int", 1000, "long", 0x00050004);slide-out
    GUIDelete($TBgui)
    EndFunc ;==>_TrayMessageBox

    [/autoit]

    Anstatt GUISetBkColor(0xFF0000), GUICtrlCreatePic("bild.jpg",0,0) nutzen.

  • hmmm nur das dann der text von ner grauen farbe umrundet wird und dadurch das bild nichtmehr sichtbar is )=