OnEvent Menü funktioniert nicht

  • Hi,

    ich habe angefangen eine kleine GUI mit menü zu erstellen.
    1. Problem
    Bei dem Klick auf "Beenden" unter Datei oder auf "Über diese Software" unter Info, werden die Funktionen nicht ausgeführt.
    2. Problem
    Wenn die GU im Systemtray ist, soll sich die GU auch wieder mit einem Doppelklick auf das Icon öffnen.
    Keine Ahnung wie ich das anstelle.
    3. Problem
    Minimiere ich das Fenster in den Tray, und rufe es dannach wieder über "Open" auf, ist die Gui zwar in Taskleiste aber nicht aktiviert.
    Wenn ich das Fenster SChließe und anschließend wieder über "Open" gehe, ist das Fenster sichtbar wie gewohnt.

    Hoffe einer weiß Rat.

    Hier der Code:

    [autoit]

    #include <GUIConstants.au3>
    #NoTrayIcon

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

    Opt("TrayMenuMode",1) ; Default tray menu items (Script Paused/Exit) will not be shown.
    $openitem = TrayCreateItem("Open")
    $exititem = TrayCreateItem("Exit")
    TraySetIcon("Shell32.dll",14)
    TraySetState()

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

    Dim $w = 250
    Dim $h = 250

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

    Local $maingui= GUICreate("Networkchanger", $w, $h, @DesktopWidth - $w - 20, 20)

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

    ;Menü erstellen
    $menuDatei = GUICtrlCreateMenu ("Datei")
    $menuInfo = GUICtrlCreateMenu ("Info")
    $menuDateiBeenden = GUICtrlCreateMenuitem("Beenden", $menuDatei)
    $menuInfoAbout = GUICtrlCreateMenuitem("Über diese Software", $menuInfo)
    GUICtrlSetOnEvent($menuDateiBeenden, "_Exit")
    GUICtrlSetOnEvent($menuInfoAbout, "_Info")

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

    ;Buttons erstellen
    $Button_1 = GUICtrlCreateButton("Networkchanger aktiviern", 5, 30, 150)
    $Button_2 = GUICtrlCreateButton("Networkchanger deaktiviern", 5, 60,150)

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

    WinSetState($mainGui, "", @SW_Show)

    While 1
    $msg = GUIGetMsg()
    $msg2 = TrayGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    WinSetState($mainGui, "", @SW_HIDE)
    Case $msg = $GUI_EVENT_MINIMIZE
    WinSetState($mainGui, "", @SW_HIDE)
    Case $msg = $Button_1
    Run('Notepad.exe') ; Will Run/Open Notepad
    Case $msg = $Button_2
    MsgBox(0, 'Testing', 'Button 2 was pressed') ; Will demonstrate Button 2 being pressed
    Case $msg2 = $exititem
    ExitLoop
    Case $msg2 = $openitem
    WinSetState($mainGui, "", @SW_Show)
    WinActivate($mainGui, "")

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

    EndSelect

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

    WEnd

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

    Func _Info()
    MsgBox(0, "Info", "Programmiert von Dominik Kolling, KoSi-Student")
    EndFunc ;==> _Info

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

    func _Exit()
    Exit
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von dabudai (17. September 2008 um 13:40)

  • Leider funktioniert es immernoch nicht.


    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #NoTrayIcon

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

    Opt("TrayMenuMode",1) ; Default tray menu items (Script Paused/Exit) will not be shown.
    ;Opt("GUIOnEventMode", 1) ; Aktivier OnEvent Modus
    $openitem = TrayCreateItem("Open")
    $exititem = TrayCreateItem("Exit")
    TraySetIcon("Shell32.dll",14)
    TraySetState()

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

    Dim $w = 250
    Dim $h = 250

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

    Local $maingui= GUICreate("Networkchanger", $w, $h, @DesktopWidth - $w - 20, 20)

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

    ;Menü erstellen
    $menuDatei = GUICtrlCreateMenu ("Datei")
    $menuInfo = GUICtrlCreateMenu ("Info")
    $menuDateiBeenden = GUICtrlCreateMenuitem("Beenden", $menuDatei)
    $menuInfoAbout = GUICtrlCreateMenuitem("Über diese Software", $menuInfo)
    ;GUICtrlSetOnEvent($menuDateiBeenden, "_Exit")
    ;GUICtrlSetOnEvent($menuInfoAbout, "_Info")

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

    ;Buttons erstellen
    $Button_1 = GUICtrlCreateButton("Networkchanger aktiviern", 5, 30, 150)
    $Button_2 = GUICtrlCreateButton("Networkchanger deaktiviern", 5, 60,150)

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

    WinSetState($mainGui, "", @SW_Show)

    While 1
    $msg = GUIGetMsg()
    $msg2 = TrayGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    WinSetState($mainGui, "", @SW_HIDE)
    Case $msg = $GUI_EVENT_MINIMIZE
    WinSetState($mainGui, "", @SW_HIDE)
    Case $msg = $Button_1
    Run('Notepad.exe') ; Will Run/Open Notepad
    Case $msg = $Button_2
    MsgBox(0, 'Testing', 'Button 2 was pressed') ; Will demonstrate Button 2 being pressed
    Case $msg2 = $exititem
    ExitLoop
    Case $msg2 = $openitem
    WinSetState($mainGui, "", @SW_Show)
    WinActivate($mainGui, "")
    Case $msg = $menuDateiBeenden
    _Exit()
    Case $msg = $menuInfoAbout
    _Info()

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

    EndSelect

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

    WEnd

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

    Func _Info()
    MsgBox(0, "Info", "Programmiert von Dominik Kolling, KoSi-Student")
    EndFunc ;==> _Info

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

    Func _Exit()
    Exit
    EndFunc ;==> _Exit

    [/autoit]
  • Danke für die Hilfe. Problem 1 ist somit behoben.
    Musst mir aber noch erklären warum das der so ist.

    Problem 2 und Problem 3 sidn noch offen.

  • Danke für eure Antworten.

    Problem 1 und 3 gelöst.
    Bei 2 habe ich noch eine Fehlermeldung welche ich nicht wegbekomme.

    [autoit]

    Case $msg2 = $TRAY_EVENT_PRIMARYDOUBLE
    GUISetState(@SW_SHOW)
    GUISetState(@SW_RESTORE,$maingui)

    [/autoit]

    Hier bekomme ich die Fehlermeldung, dass die Variable "$TRAY_EVENT_PRIMARYDOUBLE" nicht deklariert ist.