TrayIcon links/rechts unterschiedliche Menüs

  • hallo,

    ich experimentiere grad mit den trayfunctions herum und komm nicht weiter:

    ich möchte ein trayicon erzeugen, welches beim click mit der linken mouse-taste ein menue zeigt, beim click mit der rechten mouse-taste ein anderes menue.

    klingt einfach, aber ich komm nicht drauf.

    danke fuer eure hilfe


    sam

  • guck dir mal den befehl traysetclick an ^^ den rest solltest du dann alleine hinbekommen xD

  • hi mignon,

    traysetclick setzt mir doch generell ein menue auf die linke ODER die rechte mouse-taste???

    in klitzekleines beispiel wuerde mir eventuell reichen, wie ich auf einem icon links ein anderes menue als rechts bekomme. denn momentan steh ich etwas aufm schlauch.


    danke


    sam

  • Hab ne Idee:
    Ne Unsichtbare Gui, deren Kontextmenu verwendet wird

    Spoiler anzeigen
    [autoit]

    #Include <Constants.au3>
    #include <GUIConstants.au3>

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

    Opt("GUIOnEventMode",1)
    Opt("TrayOnEventMode",1)
    TraySetClick(8)

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

    $PrimaryContextgui = GUICreate("My GUI Context Menu", 1, 1,@DesktopWidth+1,@DesktopHeight+1,$WS_POPUP,$WS_EX_TRANSPARENT+$WS_EX_TOOLWINDOW)
    $contextmenu = GUICtrlCreateContextMenu ()
    $newsubmenu = GUICtrlCreateMenu ("new", $contextmenu)
    $textitem = GUICtrlCreateMenuitem ("text", $newsubmenu)
    $fileitem = GUICtrlCreateMenuitem ("Open", $contextmenu)
    $saveitem = GUICtrlCreateMenuitem ("Save", $contextmenu)
    GUICtrlCreateMenuitem ("", $contextmenu) ; separator

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

    $infoitem = GUICtrlCreateMenuitem ("Info", $contextmenu)
    GUICtrlSetOnEvent(-1,"ABOUT")

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

    GUISetState ()

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

    Opt("TrayMenuMode",1) ; Default tray menu items (Script Paused/Exit) will not be shown.
    TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN,"PRIMARY")
    $prefsitem = TrayCreateItem("Preferences")
    TrayItemSetOnEvent(-1,"PREF")
    TrayCreateItem("")
    $aboutitem = TrayCreateItem("About")
    TrayItemSetOnEvent(-1,"ABOUT")
    TrayCreateItem("")
    $exititem = TrayCreateItem("Exit")
    TrayItemSetOnEvent(-1,"CLOSE")

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

    TraySetState()

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

    While 1
    Sleep(100)
    WEnd

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

    Func ABOUT()
    Msgbox(64, "About:", "AutoIt3-Tray-sample.")
    EndFunc

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

    Func PRIMARY()
    ControlClick($PrimaryContextgui,"","","right")
    EndFunc

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

    Func PREF()
    Msgbox(64, "Preferences:", "OS:" & @OSVersion)
    EndFunc

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

    Func CLOSE()
    Exit
    EndFunc

    [/autoit]
  • by the way: ein kollege im englischen forum hatte diese idee ...


    #include <Constants.au3>

    Opt("TrayOnEventMode",1)
    Opt("TrayMenuMode",1)

    TraySetClick(18)

    Global $Tray[11], $state = 2

    TrayCreateItem("")
    TrayCreateItem("Exit")
    TrayItemSetOnEvent(-1, "TrayEvent")
    TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN, "TrayMenuLeftClick")
    TraySetOnEvent($TRAY_EVENT_SECONDARYDOWN, "TrayMenuRightClick")
    TraySetState()

    While 1
    Sleep(100)
    WEnd

    Func TrayMenuLeftClick()
    If $state = 0 Or $state = 2 Then
    $state = 1
    For $i = 6 to 10
    TrayItemDelete($Tray[$i])
    Next
    For $i = 1 to 5
    $Tray[$i] = TrayCreateItem("1st Menu Item - " & $i, -1, $i -1 )
    TrayItemSetOnEvent(-1, "TrayEvent")
    Next
    EndIf
    EndFunc

    Func TrayMenuRightClick()
    If $state = 1 Or $state = 2 Then
    $state = 0
    For $i = 1 to 5
    TrayItemDelete($Tray[$i])
    Next
    For $i = 6 to 10
    $Tray[$i] = TrayCreateItem("2nd Menu Item - " & $i - 5, -1, $i - 6)
    TrayItemSetOnEvent(-1, "TrayEvent")
    Next
    EndIf
    EndFunc

    Func TrayEvent()
    MsgBox(0, "", TrayItemGetText(@TRAY_ID))
    If TrayItemGetText(@TRAY_ID) = "Exit" Then Exit
    EndFunc


    funktioniert auch, das mit dem unsichtbaren gui gefaellt mir aber besser ...


    so long


    sam