TrayCreateItem und Pause

  • Hey,
    kann mir jemand sagen, weßhalb die Funktion TogglePause, wenn sie über das Tray aufgerufen wird, nicht wieder "beendet" wird? Wenn man das Hotkey verwendet geht es einwandfrei...

    Code:

    Spoiler anzeigen
    [autoit]

    HotKeySet('{ESC}', 'End')
    HotKeySet('{F1}', 'TogglePause') ;funktioniert

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

    Global $Paused

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

    #NoTrayIcon
    Opt("TrayMenuMode", 1)
    Opt("TrayOnEventMode", 1)
    TrayCreateItem("Pause Bot", -1, 1)
    TrayItemSetOnEvent(-1, "TogglePause") ;funktioniert NICHT richtig (pausiert nur, beendet die Pause nicht)
    TraySetState()

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

    While 1
    Sleep(100)
    ToolTip('Runnin', 0, 0)
    WEnd

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

    Func TogglePause()
    $Paused = Not $Paused
    While $Paused
    Sleep(100)
    ToolTip('paused', 1, 1)
    WEnd
    ToolTip('')
    EndFunc ;==>TogglePause

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

    Func End()
    Exit
    EndFunc ;==>End

    [/autoit]

    Grüße

    Einmal editiert, zuletzt von okolarnis (30. September 2013 um 03:56)

    • Offizieller Beitrag

    Wenn die Pause am laufen ist, werden die Events vom Tray nicht mehr bearbeitet. Deshalb wird die Funktion TogglePause auch nicht mehr aufgerufen.

    Spoiler anzeigen
    [autoit]

    HotKeySet('{ESC}', 'End')
    HotKeySet('{F1}', 'TogglePause') ;funktioniert

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

    Global $Paused

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

    #NoTrayIcon
    Opt("TrayMenuMode", 1)
    Opt("TrayOnEventMode", 1)
    TrayCreateItem("Pause Bot", -1, 1)
    TrayItemSetOnEvent(-1, "Tog") ;funktioniert NICHT richtig (pausiert nur, beendet die Pause nicht)
    TraySetState()

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

    While 1
    Sleep(100)
    WEnd

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

    Func Tog()
    ConsoleWrite("PauseEvent wird bearbeitet " & @LF)
    TogglePause()
    EndFunc

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

    Func TogglePause()
    $Paused = Not $Paused
    While $Paused
    Sleep(100)
    ToolTip('paused', 1, 1)
    WEnd
    ToolTip('')
    EndFunc ;==>TogglePause

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

    Func End()
    Exit
    EndFunc ;==>End

    [/autoit]

    Schau dir mal die Consolenausgabe des obrigen Scriptes an. Wenn die Pause am laufen ist, wird der Event zwischengespeichert und nach dem verlassen der Pause ausgeführt.

    Edit: Die Logik hinter deinem Script verstehe ich sowieso nicht, warum benutz du nicht die eingebaute Pausefunktion der Traymenüs?
    Man kann ja die Autopause ausschalten.

    Spoiler anzeigen
    [autoit]

    HotKeySet('{ESC}', 'End')
    HotKeySet('{F1}', 'TogglePause') ;funktioniert

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

    Global $Paused
    Local $a=0
    #NoTrayIcon
    ;Opt("TrayMenuMode", 1)
    Opt("TrayOnEventMode", 1)
    Opt("TrayAutoPause", 0) ;0=no pause, 1=Pause

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

    ;TrayCreateItem("Pause Bot", -1, 1)
    ;TrayItemSetOnEvent(-1, "Tog") ;funktioniert NICHT richtig (pausiert nur, beendet die Pause nicht)
    TraySetState()

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

    While 1
    Sleep(100)
    $a+=1
    ToolTip($a,1,1)
    WEnd

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

    Func TogglePause()
    $Paused = Not $Paused
    While $Paused
    Sleep(100)
    ToolTip('paused', 1, 1)
    WEnd

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

    EndFunc ;==>TogglePause

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

    Func End()
    Exit
    EndFunc ;==>End

    [/autoit]
  • Daran habe ich dummerweise nicht gedacht. Danke!
    Noch eben kurz zwei Fragen:
    Kann ich das "Script Paused" im Tray dann auch umbennen?
    Und warum wird die Aktion beim Verwenden des Trays nur zwischengespeichert, bei HotKeySet aber nicht?

    Lg