Problem mit Traymenu

  • Hallo zusammen. Gerade hab ich angefangen mich mit AutoIt zu beschäftigen und schon stoße ich auf Probleme.

    Jetzt grade gehts mir um ein Tray Menü das leider nicht so funktioniert wie ich es gerne hätte. Warum lassen sich die einzelnen TrayItems nicht an und beim nächsten klick wieder ausmachen? Ich hätte es gerne so das ich, wenn ich einmal auf "checked" klicke ein Haken gesetzt wird und beim zweiten mal wieder deaktiviert wird. Das funktioniert bei dem skript unten nur dann, wenn ich vorher einmal auf "check it" geklickt habe. (Das Scipt ist das TrayItemSetState aus dem Helpfile)

    Kann mir jemand nen Denkanstoß liefern? Danke :D

    [autoit]

    #Include <Constants.au3>
    #NoTrayIcon

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

    Opt("TrayMenuMode",1) ; Default tray menu items (Script Paused/Exit) will not be shown.

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

    $chkitem = TrayCreateItem("Check it")
    TrayCreateItem("")
    $checkeditem = TrayCreateItem("Checked")
    TrayCreateItem("")
    $exititem = TrayCreateItem("Exit")

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

    TraySetState()

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

    While 1
    $msg = TrayGetMsg()
    Select
    Case $msg = 0
    ContinueLoop
    Case $msg = $chkitem
    TrayItemSetState($checkeditem,$TRAY_CHECKED)
    Case $msg = $exititem
    ExitLoop
    EndSelect
    WEnd

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

    Exit

    [/autoit]
  • das ist in diesem script aber auch der sinn, dass checked gecheckt wird, wenn du auf checkit klickst ;)

    Zitat

    Case $msg = $chkitem
    TrayItemSetState($checkeditem,$TRAY_CHECKED)

    probiers mal damit:

    [autoit]

    Case $msg = $checkeditem
    TrayItemSetState($checkeditem,$TRAY_CHECKED)

    [/autoit]
    • Offizieller Beitrag

    So kannst du durch Klick auf das Item selber checken/unchecken:

    Spoiler anzeigen
    [autoit]

    #Include <Constants.au3>
    #NoTrayIcon

    Opt("TrayMenuMode",1+2) ; Default tray menu items (Script Paused/Exit) will not be shown.
    ; usercreated checked items will not automatically unchecked if you click it

    $checkeditem = TrayCreateItem("Checked")
    $shape = TrayCreateItem("")
    $exititem = TrayCreateItem("Exit")

    TraySetState()

    While 1
    $msg = TrayGetMsg()
    Switch $msg
    Case 0
    ContinueLoop
    Case $checkeditem
    $state = TrayItemGetState($checkeditem)
    Switch $state
    Case 68 ; unchecked
    TrayItemSetState($checkeditem,$TRAY_CHECKED)
    Case 65 ; checked
    TrayItemSetState($checkeditem,$TRAY_UNCHECKED)
    EndSwitch
    Case $exititem
    ExitLoop
    EndSwitch
    WEnd

    Exit

    [/autoit]