Wert zur Laufzeit über Tray-Menü ändern

  • Hallo zusammen,

    ich suche nach eine Möglichkeit einen Wert zur Laufzeit über das Tray-Menü zu ändern.
    In meinem Beispiel habe ich das mit AdlibRegister versucht. Es arbeitet aber leider sehr langsam.

    Hat jemand von euch eine Idee wie man das besser lösen kann?

    Danke vorab...

    Hier mein Beispiel:

    [autoit]


    #NoTrayIcon
    #Include <Constants.au3>
    AdlibRegister("MyTrayFnc",150)

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

    Opt("TrayMenuMode",1) ; Standard Traymenüeinträge (Skript pausieren/beenden) werden nicht angezeigt.

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

    $Schnell = TrayCreateItem("Schnell")
    $Langsam = TrayCreateItem("Langsam")
    TrayCreateItem("") ; Strich
    TrayCreateItem("") ; Strich
    $exititem = TrayCreateItem("Beenden")
    TraySetState()

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

    $Wait = 5
    $Max =50

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

    For $I=1 To $Max
    $Result= MsgBox(1,"Test: Durchlauf " & $I & " von " & $Max,"Ich warte " & $Wait & " Sekunden" & @CRLF & "und gehe dann weiter!", $Wait)
    if $Result=2 Then ExitLoop
    sleep(1000)
    Next

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

    MsgBox(0,"Testlauf","Durchlauf beendet.." )
    Exit

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

    Func MyTrayFnc()
    $msg = TrayGetMsg()
    ;Beep(500,100)
    Select
    Case $msg = $Schnell
    $Wait -= 2
    Beep(700,100)
    Case $msg = $Langsam
    $Wait += 2
    Beep(200,100)
    Case $msg = $exititem
    Exit
    EndSelect
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von Schumi (17. November 2011 um 18:21)

  • Hallo Oscar,

    danke für den Hinweis.
    Ja richtig, diese Wartezeit nehme ich gern hin.
    Aber nach dem Schließen der MsgBox sind auch noch viele Durchläufe der MyTrayFnc-Funktion notwendig um das Event zu erkennen.

    In der Funktion habe ich jetzt das Select durch ein Switch (soll schneller sein) ersetzt.
    Das Ganze funktioniert aber nicht viel besser..

    Ich suche eigentlich nur eine Lösung für eine Art visuelles Protokoll.
    Also:
    Wenn das Prog. läuft soll über die Msgbox eine kurze Info über den Prg.-Stand ausgegeben werden (kleine Pause und es geht weiter).
    Wenn ich keine Infos mehr brauche schalte ich sie ab und das Prog arbeitet schneller.

    Hast du evtl noch eine Alternative?

    Gruß Schumi

  • Achso...
    Du meinst eine kleine mini-Gui (immer eingeblendet) in der dann in einer Textbox der jeweilige Prog.-Status angezeigt wird.
    Darunter ein/ zwei/ drei Button zur Steuerung zB. für mit/ohne Statusanzeige bzw. Stopp?

    Und das Ganze mit $msg = GUIGetMsg() in der MyTrayFnc prüfen?
    Ist denn GUIGetMsg() schneller als TrayGestMsg() ?

    So?