Kleine Frage

  • Hallo,

    ich habe mir mal mit hilfe der ModernMenü.au3 etwas zusammengebastelt. Es besteht aus 2 GUI´s und einen Traycontrol.
    Das problem ist, dass Traymenü nichts maccht wen man z.b auf beeden klickt. Es hat irgendwas mit While 1 und WEnd zu tun.
    Und es kommen auch keine Fehlermeldungen.
    Nun weiß ich aber nicht wie ich dieses Problem lösen kann.
    Kann mir einer helfen?

    [autoit]

    While 1
    $msg = GUIGetMsg(1)
    Switch $msg[1]
    Case $IEGUI, $nTrayMenu1
    Switch $msg[0]

    Case $GUI_EVENT_CLOSE
    _TrayIconDelete($nTrayIcon1)
    ExitLoop

    Case $TrayTop
    AdlibEnable("_Topmost")

    Case $TrayNormal_1
    AdlibDisable()
    WinSetOnTop($IEGUI,"",0)

    Case $TrayHide
    GUISetState(@SW_HIDE,$IEGUI)

    Case $TrayNormal_2
    GUISetState(@SW_SHOW,$IEGUI)

    Case $TrayExit
    _TrayIconDelete($nTrayIcon1)
    ExitLoop

    Case $TrayPlay
    _wmpvalue( $oWMP, "Play" )

    Case $TrayPause
    _wmpvalue( $oWMP, "Stop" )

    EndSwitch

    Case $Dialog_1
    Switch $msg[0]
    Case $gui_event_close
    GUISetState(@SW_HIDE, $Dialog_1)

    EndSwitch
    EndSwitch
    WEnd

    [/autoit]
  • Case $IEGUI, $nTrayMenu1
    Das geht nicht.
    $msg[1] ist beim TrayEvent entweder $TRAYMSGWND oder das letzte vor dem Menu erzeugte Fenster. Du kannst vor dem erzeugen mit GUISwitch zu der von dir gewünschten GUI wechseln, auf der das DummyCtrl für das Menu erstellt werden soll.
    Das einfachste ist aber, einfach das Tray in
    Switch $msg[1]
    Case Else
    abzufragen

  • aber so funkt es auch nicht :(

    [autoit]

    While 1
    $msg = GUIGetMsg(1)
    Switch $msg[1]
    Case $IEGUI
    Switch $msg[0]

    Case $GUI_EVENT_CLOSE
    _TrayIconDelete($nTrayIcon1)
    ExitLoop

    Case $TrayTop
    AdlibEnable("_Topmost")

    Case $TrayNormal_1
    AdlibDisable()
    WinSetOnTop($IEGUI,"",0)

    Case $TrayHide
    GUISetState(@SW_HIDE,$IEGUI)

    Case $TrayNormal_2
    GUISetState(@SW_SHOW,$IEGUI)

    Case $TrayExit
    _TrayIconDelete($nTrayIcon1)
    ExitLoop

    Case $TrayPlay
    _wmpvalue( $oWMP, "Play" )

    Case $TrayPause
    _wmpvalue( $oWMP, "Stop" )

    EndSwitch

    Case $Dialog_1
    Switch $msg[0]
    Case $gui_event_close
    GUISetState(@SW_HIDE, $Dialog_1)

    EndSwitch
    EndSwitch
    WEnd

    [/autoit]
  • Sagte ich nicht, du sollst es einfach im Case Else testen ?
    Also

    [autoit]

    Switch $msg[1]
    Case $IEGUI
    ...
    Case $Dialog_1
    ...
    Case Else
    ; Tray Check !!!!!!

    [/autoit]
  • Erkennst du da vielleicht etwas aus deinem Code wieder
    - Ja? Gut :) Wie du seihst ist das ein weiterer Cas AM ENDE deiner ersten Switch-Abfrage ( Switch $msg[1] )

    -Nein X( Dann schau dir deinen Code nochmal GENAU an.

  • Also, Dann: :pinch:
    Mein Code -- Dein Code
    Zeile 1 -- Zeile 3
    Zeile 2 -- Zeile 4
    Zeile 3 -- Zeile 5 + 7,8,9 + 34
    Zeile 4 -- Zeile 36
    Zeile 5 -- Zeile 37,38,39
    Zeile 6 -- NEU
    Zeile 7 -- Das was bei dir in Zeile 11 bis 33 steht ( Den Switch aus Zeile 5 und 34 nicht vergessen)

    Jetzt klar ?

  • @Deepred :evil:

    Was funktionier nicht?

    Wie schaut Dein Script derzeitig aus, nach der o. g. Hilfe

    Crazy-A

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Ähm also soweit ich es verstanden habe so oder?

    [autoit]

    While 1
    $msg = GUIGetMsg(1)
    Switch $msg[1]
    Case $IEGUI
    Switch $msg[0]

    Case $GUI_EVENT_CLOSE
    _TrayIconDelete($nTrayIcon1)
    ExitLoop

    Case $TrayTop
    AdlibEnable("_Topmost")

    Case $TrayNormal_1
    AdlibDisable()
    WinSetOnTop($IEGUI,"",0)

    Case $TrayHide
    GUISetState(@SW_HIDE,$IEGUI)

    Case $TrayNormal_2
    GUISetState(@SW_SHOW,$IEGUI)

    Case $TrayExit
    _TrayIconDelete($nTrayIcon1)
    ExitLoop

    Case $TrayPlay
    _wmpvalue( $oWMP, "Play" )

    Case $TrayPause
    _wmpvalue( $oWMP, "Stop" )

    EndSwitch

    Case $Dialog_1
    Switch $msg[0]
    Case $gui_event_close
    GUISetState(@SW_HIDE, $Dialog_1)

    EndSwitch
    Case $Traymenu
    Switch $msg[0]
    Case $trayexit
    exit

    EndSwitch
    EndSwitch
    WEnd

    [/autoit]

    Und wens doch falsch ist nicht sauer sein pls :huh:

  • Ich habs dir schon 2x gesagt !
    Das heißt nicht Case $Traymenu sondern
    Case Else
    und Zeile 11 - 32 musst du noch nach Zeile 46 verschieben !