ComboBox starten, auswählen dann öffnet sich HauptGUI und dort Funktionen mit HotKeySet belegen

  • Tagchen!

    Ich will folgendes:
    Erst starte ich mein Script, dann öffnet sich ein Fenster mit einer ComboBox, dort soll man auswählen können und auf "Start" klicken, dann schließt sich das Fenster mit der ComboBox und meine HauptGUI soll sich dann öffnen. Das haben ich soweit alles geschafft, nun will ich, dass in der HauptGUI eine Anleitung zu meinem script steht, was ich auch geschafft habe. Dort habe ich reingeschrieben, dass sich das script mit F1 startet.
    Nun wie kann ich mit HotKeySet im GUI arbeiten?
    Ich will ja, dass sich die Funktion erst dann starten kann, wenn meine HauptGUI offen ist.

    Hier als Beispiel:

    [autoit]

    #region - Timestamp
    ;2011-07-11 16:30:19
    #endregion - Timestamp

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

    #include

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

    #region - GUI Create
    $hStart = GUICreate('', 200, 100)
    $combo = GUICtrlCreateCombo("macht nichts", 4, 4)
    GUICtrlSetData(-1, "öffnet GUI")
    $button = GUICtrlCreateButton("start", 4, 40)
    GUISetState()
    #endregion - GUI Create

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

    #region - GUI SelectLoop
    While 1
    $msg = GUIGetMsg(1)
    Select
    Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $hStart
    GUIDelete($hStart)
    Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $hGUI
    Exit
    Case $msg[0] = $button
    If GUICtrlRead($combo) = "öffnet GUI" Then _main()
    EndSelect
    WEnd
    #endregion - GUI SelectLoop

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

    Func _main()GUIDelete($hStart)
    #region - GUI Create
    $hGUI = GUICreate('GUI', 200, 200)
    GUISetState()
    #endregion - GUI Create
    EndFunc ;==>_main

    [/autoit]

    Hatte mir das so gedacht dass ich folgendes einbaue:

    [autoit]

    HotKeySet ("{F1}", "Go")

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

    While 1 Sleep (500)Wend
    Func Go ()Sleep (3000)EndFunc

    [/autoit]

    Dieses HotKey soll erst starten können, wenn mein HauptGUI geöffnet ist.

  • Hi guten Morgen!


    Auf basis deiner vorstellung habe ich ein beispiel erstellt.
    In dem beispiel wurde GUIGetMsg endfernt durch GUIOnEventMode ersetzt, was ich denke die einfachste lösung ist wobei das beispiel noch einfacher gehalten werden kann.

    Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    Opt('GUIOnEventMode', 1)

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

    HotKeySet("{F1}", "Go")

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

    Global $hGUI

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

    $hStart = GUICreate('', 200, 100)
    GUISetOnEvent(-3, 'GUI_Exit')
    $combo = GUICtrlCreateCombo("macht nichts", 4, 4)
    GUICtrlSetData(-1, "öffnet GUI")
    $button = GUICtrlCreateButton("start", 4, 40)
    GUICtrlSetOnEvent(-1, '_Menue')
    GUISetState()

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

    Func _Menue()
    Switch @GUI_CtrlId
    Case $button
    If GUICtrlRead($combo) = 'öffnet GUI' Then GUIDelete($hStart)
    _main()
    EndSwitch
    EndFunc ;==>_Menue

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

    Func _main()
    $hGUI = GUICreate('GUI', 200, 200)
    GUISetOnEvent(-3, 'GUI_Exit')
    GUISetState()
    EndFunc ;==>_main

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

    Func Go()
    If Not HWnd($hGUI) Then Return
    MsgBox(0, 0, 'Bin Active')
    EndFunc ;==>Go

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

    Func GUI_Exit()
    Exit
    EndFunc ;==>GUI_Exit

    [/autoit]

    Warum soll die GUI gelöscht werden, verstecken reicht doch aus!

    Lg kleiner