TrayMenü mit Icons [gelöst] - Neues Problem: Text abfragen geht nicht.

  • Ich möchte mit der UDF von Holger Kotsch ein TrayMenü mit Icons erstellen. Ich hab dazu das Beispiel Win2Tray an meine Bedürfnisse angepasst. Nun möchte ich das ganze im TrayOnEventMode machen. Nur leider kann ich den Eintrag "Exit" anklicken aber das Skript wird nicht beendet.

    Spoiler anzeigen
    [autoit]


    #NoTrayIcon
    Opt("TrayOnEventMode", 1)
    #include <GUIConstants.au3>
    #include "ModernMenu.au3"
    $nTrayIcon1= _TrayIconCreate("Win2Tray", "shell32.dll", 12)
    _TrayIconSetClick(-1, 16)
    $TrayAbout= _TrayCreateItem(-1, "About")
    _TrayItemSetIcon(-1, "shell32.dll", 23)
    _TrayCreateItem(-1, "")
    _TrayItemSetIcon(-1, "", 0)
    $TrayExit= _TrayCreateItem(-1, "Exit")
    _TrayItemSetIcon($TrayExit, "shell32.dll", 27)
    TrayItemSetOnEvent($TrayExit, "_exit")
    Func _exit()
    Exit
    EndFunc
    While 1
    Sleep(250)
    WEnd

    [/autoit]

    Edit: Hab gerade in einem anderen Beitrag gelesen das das TrayMenü bei der UDF ModernMenu mit GUICtrlCreateMenu erstellt wird und man das im GUIOnEventMode ausführen muss.

    Edit 2: Nun möchte ich gerne mit GUICtrlRead den Text von einem Menü-Eintrag abfragen. Aber es wird ein leerer String angezeigt. Als Beispiel nehm ich den Menü-Eintrag About

    Spoiler anzeigen
    [autoit]


    #NoTrayIcon
    Opt("GUIOnEventMode", 1)
    #include <GUIConstants.au3>
    #include "ModernMenu.au3"
    $nTrayIcon1 = _TrayIconCreate("Win2Tray", "shell32.dll", 12)
    _TrayIconSetClick(-1, 16)
    $TrayAbout = _TrayCreateItem(-1, "About")
    _TrayItemSetIcon(-1, "shell32.dll", 23)
    GUICtrlSetOnEvent($TrayAbout, "_exit")
    _TrayCreateItem(-1, "")
    _TrayItemSetIcon(-1, "", 0)
    $TrayExit = _TrayCreateItem(-1, "Exit")
    _TrayItemSetIcon($TrayExit, "shell32.dll", 27)
    GUICtrlSetOnEvent($TrayExit, "_exit")
    Func _exit()
    Exit
    EndFunc
    Func _about()
    MsgBox(0, "", GUICtrlRead(@GUI_CtrlId, 1))
    EndFunc
    While 1
    Sleep(250)
    WEnd

    [/autoit]

    2 Mal editiert, zuletzt von S-e-v-e-n (1. August 2008 um 21:31)

  • Also als erstes würd ich mal

    [autoit]

    #include "ModernMenu.au3"

    [/autoit]


    in

    [autoit]

    #include <ModernMenu.au3>

    [/autoit]


    ändern ;)

  • [autoit]


    #include <ModernMenu.au3>

    [/autoit]

    bringt nur was wenn die UDF im AutoIt Include Verzeichnis ist

    [autoit]


    #include "ModernMenu.au3"

    [/autoit]


    wird verwendet, wenn die UDF im gleichen Verzeichnis wie das Skript ist

  • Die Schreibweise ist doch fast egal. Das Einzige was sich ändert ist die Suchreihenfolge des Interpreters nach der #inlcude-Datei:
    Bei #include <>
    1) Include-Verzeichnis
    2) Benutzerdefinierte Include Verzeichniss(e) / HKEY_CURRENT_USER\Software\AutoIt v3\AutoIt\Includ
    3) Scriptdir

    bei #include "" andersherum. Wie in jeder anderen Programmiersprache.
    Mehr dazu: siehe Hilfe :)

  • Hab es jetzt mal mit GetMenuText ausprobiert, aber leider funktioniert es immer noch nicht. stattdessen wird das skript beendet.

    Spoiler anzeigen

    [autoit]
    #NoTrayIcon
    Opt("GUIOnEventMode", 1)
    #include <GUIConstants.au3>
    #include "ModernMenu.au3"
    $nTrayIcon1 = _TrayIconCreate("Win2Tray", "shell32.dll", 12)
    _TrayIconSetClick(-1, 16)
    $TrayAbout = _TrayCreateItem(-1, "About")
    _TrayItemSetIcon(-1, "shell32.dll", 23)
    GUICtrlSetOnEvent($TrayAbout, "_exit")
    _TrayCreateItem(-1, "")
    _TrayItemSetIcon(-1, "", 0)
    $TrayExit = _TrayCreateItem(-1, "Exit")
    _TrayItemSetIcon($TrayExit, "shell32.dll", 27)
    GUICtrlSetOnEvent($TrayExit, "_exit")
    Func _exit()
    Exit
    EndFunc
    Func _about()
    MsgBox(0, "", GetMenuText(@GUI_CtrlId))
    EndFunc
    While 1
    Sleep(250)
    WEnd
    [autoit]

  • Nein wenn ich ein Unterstrich dazu schreibe, sagt er mir das dei Funktion fehlt. Ich poste mal die ModernMenu mit der ich arbeite

  • So, die ist nicht neu :)
    1) Die gibt es hier: http://www.autoitscript.com/forum/index.php?showtopic=20967&hl=modernmenu
    2) Es sollte die ModernMenuRaw.au3 verwendet werden -> keine Fehler wegen doppelter Konstanten
    3) Die Befehle haben eine andere Parameter-Reihenfolge
    4) Die neuste AutoIt-Version ist 3.2.12.1 ( @S-e-v-e-n : Die hast du sicher nicht :) )
    5) Das Skript sieht dann so aus:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    Opt("GUIOnEventMode", 1)
    #include <GUIConstants.au3>
    #include "ModernMenuRaw.au3"
    $nTrayIcon1 = _TrayIconCreate("Win2Tray", "shell32.dll", 12)
    _TrayIconSetClick(-1, 16)
    _TrayCreateContextMenu()
    _TrayIconSetState()
    $TrayAbout = _TrayCreateItem("About")
    _TrayItemSetIcon(-1, "shell32.dll", 23)
    GUICtrlSetOnEvent($TrayAbout, "_about")
    _TrayCreateItem("")
    _TrayItemSetIcon(-1,"", 0)
    $TrayExit = _TrayCreateItem("Exit")
    _TrayItemSetIcon($TrayExit, "shell32.dll", 27)
    GUICtrlSetOnEvent($TrayExit, "_exit")
    Func _exit()
    Exit
    EndFunc
    Func _about()
    MsgBox(0, "", _GetMenuText(@GUI_CtrlId))
    EndFunc
    While 1
    Sleep(250)
    WEnd

    [/autoit]


    _GetMenuText Stimmt :)
    PS: Es ist klar, dass sich das Skript beim Klick auf about beendet, wenn du als Funktion "_exit" stehen hast :D