unterschiedliches Tray-Menü (re/li)

  • hiho,

    ich bin dabei ein tray-menü zu basteln, das zw links und rechtsklick unterscheidet, nachdem ich den tip hier gelesen habe.
    das "besondere" soll sein, das beim rechtsklick ein menü kommt, beim linksklick ein fenster ein/ausgeblendet wird.

    das ganze funzt auch schon recht gut, doch leider funktioniert das ein-/ausblenden immer nur, nachdem nochmal ein rechtsklick durchgeführt wurde. ich weiß grad nicht warum oO

    [autoit]

    #Include <GuiConstants.au3>

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

    Opt("GuiOnEventMode",1)
    Opt("TrayIconHide", 0)
    Opt("TrayOnEventMode",1)
    Opt("TrayMenuMode",1)

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

    Global $writer

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

    TraySetClick(18)
    Global $state = 2, $trayexit
    TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN, "TrayMenuLeftClick")
    TraySetOnEvent($TRAY_EVENT_SECONDARYDOWN, "TrayMenuRightClick")

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

    $writer = GUICreate("WRiTeR", 250, 400, @DesktopWidth - 270, @DesktopHeight - 430, $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW )
    WinSetOnTop($writer,'',1)
    WinSetTrans($writer,'', 100)
    GUICtrlCreateEdit("", 5, 5, 240, 390)

    GUISetState(@SW_SHOW, $writer)

    While 1
    Sleep(100)
    WEnd

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

    Func _TrayExit()
    Exit
    EndFunc

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

    Func TrayMenuRightClick()
    If $state = 1 Or $state = 2 Then
    $state = 0
    $trayexit = TrayCreateItem("Exit")
    TrayItemSetOnEvent(-1,"_TrayExit")
    EndIf
    EndFunc

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

    Func TrayMenuLeftClick()
    If $state = 0 Or $state = 2 Then
    $state = 1
    TrayItemDelete($trayexit)
    $winstate = WinGetState($writer,'')
    If BitAnd($winstate, 2) Then
    WinSetState($writer,'',@SW_HIDE)
    Else
    WinSetState($writer,'',@SW_SHOW)
    EndIf
    EndIf
    EndFunc

    [/autoit]
  • Hi,

    so geht's ...

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #Include <GuiConstants.au3>

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

    Opt("GuiOnEventMode",1)
    Opt("TrayIconHide", 0)
    Opt("TrayOnEventMode",1)
    Opt("TrayMenuMode",1)

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

    Global $writer

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

    $trayexit = TrayCreateItem("Exit")
    TrayItemSetOnEvent(-1,"_TrayExit")
    ; eigene Funktion bei Linksklick.
    TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN, "TrayMenuLeftClick")

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

    $writer = GUICreate("WRiTeR", 250, 400, @DesktopWidth - 270, @DesktopHeight - 430, $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW )
    WinSetOnTop($writer,'',1)
    WinSetTrans($writer,'', 100)
    GUICtrlCreateEdit("", 5, 5, 240, 390)

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

    TraySetState() ; Traymenü anzeigen
    TraySetClick(16) ; bei Secondary Up Menü anzeigen.
    GUISetState(@SW_SHOW, $writer)

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

    While 1
    Sleep(100)
    WEnd

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

    Func _TrayExit()
    Exit
    EndFunc

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

    Func TrayMenuLeftClick()
    $winstate = WinGetState($writer,'')
    If BitAnd($winstate, 2) Then
    WinSetState($writer,'',@SW_HIDE)
    Else
    WinSetState($writer,'',@SW_SHOW)
    EndIf
    EndFunc

    [/autoit]


    Gruß
    Greenhorn