Steuerelement aktiv und inaktiv setzen ($GUI_CHECKED)

  • Hallo, mit letzter zeit wieder am Programmieren mit AutoIt, und habe schon ein Problem.
    Und zwar bekomme ich es einfach nicht hin ein Steuerelement aktiv mit einem Häckchen zu setzen und es wieder dann zu Deaktivieren
    (UNTEN RECHTS IM TRAY MENÜ).
    Es geht nur dann, wenn ich die Anwendung schließe und es dann wieder öffne.
    Ich hoffe es kann mir einer helfen.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <Constants.au3>

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

    ;Ini
    $ini = @ScriptDir & "\autostart.ini"
    $autostart = IniRead($ini, "Konfiguration", "Autostart", 4)

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

    Opt("TrayMenuMode", 1)

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

    ;GUI
    GUICreate("Autostart", 300, 80, -1, -1)

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

    $button_suche = GUICtrlCreateButton("OK", 100, 40, 100, 25)

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

    ;Tray
    $tray_autostart = TrayCreateItem("Mit Windows starten")
    $tray_Info = TrayCreateItem("Info")
    TrayCreateItem("")
    $tray_exit = TrayCreateItem("Beenden")
    TraySetClick(8)

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

    ;Ini Überprüfung
    If $autostart <> 4 Then
    TrayItemSetState($tray_autostart, 1)
    Else
    TrayItemSetState($tray_autostart, 4)
    EndIf

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg() ;GUI
    $msg_tray = TrayGetMsg() ;Tray

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

    ;GUI
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GUI_EVENT_MINIMIZE
    GUISetState(@SW_HIDE)
    EndSwitch

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

    ;Tray
    Switch $msg_tray
    Case $TRAY_EVENT_PRIMARYDOUBLE
    GUISetState(@SW_SHOW)
    Case $tray_autostart
    If $autostart = 4 Then
    TrayItemSetState($tray_autostart, 1)
    IniWrite($ini, "Konfiguration", "Autostart", 1)
    Else
    TrayItemSetState($tray_autostart, 4)
    IniWrite($ini, "Konfiguration", "Autostart", 4)
    EndIf
    Case $tray_Info
    MsgBox(64, "Info", "By Mehmex")
    Case $tray_exit
    Exit
    EndSwitch

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

    WEnd

    [/autoit]

    Danke schon mal im voraus.

    Edit: BITTE SCHNELL UM HILFE.

    3 Mal editiert, zuletzt von m3hm3t (24. November 2008 um 14:54)

    • Offizieller Beitrag

    Du musst auch die Variable anpassen, wenn Du den Status änderst:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <Constants.au3>

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

    ;Ini
    $ini = @ScriptDir & "\autostart.ini"
    $autostart = IniRead($ini, "Konfiguration", "Autostart", 4)

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

    Opt("TrayMenuMode", 1)

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

    ;GUI
    GUICreate("Autostart", 300, 80, -1, -1)

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

    $button_suche = GUICtrlCreateButton("OK", 100, 40, 100, 25)

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

    ;Tray
    $tray_autostart = TrayCreateItem("Mit Windows starten")
    $tray_Info = TrayCreateItem("Info")
    TrayCreateItem("")
    $tray_exit = TrayCreateItem("Beenden")
    TraySetClick(8)

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

    ;Ini Überprüfung
    If $autostart <> 4 Then
    TrayItemSetState($tray_autostart, 1)
    Else
    TrayItemSetState($tray_autostart, 4)
    EndIf

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg() ;GUI
    $msg_tray = TrayGetMsg() ;Tray

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

    ;GUI
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GUI_EVENT_MINIMIZE
    GUISetState(@SW_HIDE)
    EndSwitch

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

    ;Tray
    Switch $msg_tray
    Case $TRAY_EVENT_PRIMARYDOUBLE
    GUISetState(@SW_SHOW)
    Case $tray_autostart
    If $autostart = 4 Then
    TrayItemSetState($tray_autostart, 1)
    IniWrite($ini, "Konfiguration", "Autostart", 1)
    $autostart = 1 ; <- Eingefügt
    Else
    TrayItemSetState($tray_autostart, 4)
    IniWrite($ini, "Konfiguration", "Autostart", 4)
    $autostart = 4 ; <- Eingefügt
    EndIf
    Case $tray_Info
    MsgBox(64, "Info", "By Mehmex")
    Case $tray_exit
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • DANKE dir es funktioniert jetzt. Aber ich habe eine Frage zu dem hier.
    Wozu genau die Variable eigentlich noch wenn es schon mit Ini geschrieben wird, besser gesagt zu welchem Befehl wird es von der Variable ($autostart = 1) geändert?