HotKeySet & GUI ??? GUI Funktionen geblockt?

  • Tagchen,

    Habe eine GUI erstellt und folgendes gemacht:

    [autoit]

    While 1
    $nMsg = GUIGetMsg()
    HotKeySet ("{F1}", "Go")

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

    While 1
    Sleep (1000)
    WEnd
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    MsgBox (0, "Auf Wiedersehen!", "Besuch doch mal meine Website?!")
    ShellExecute("www.xxxxxx.de")
    Exit
    Case $Bild
    ShellExecute("www.xxxxx.de")
    EndSwitch
    WEnd
    Func Go ()
    Sleep (3000)
    EndFunc

    [/autoit]


    So mein Problem ist jetzt, dass wenn ich F1 drücke, dass ich nach ausführuen der Funktion mein GUI nicht schließen kann und das durch klick auf mein Bild auch nichts mehr passiert. Wie kann ich das ändern?

    Einmal editiert, zuletzt von DeathNote (12. Juli 2011 um 22:16)

  • Als aller erstes musst du das GANZE Skript posten und nicht nur so einen Fetzen!!! Das gilt für ALLE Threads die du hier eröffnest!!So jetzt mal zu dem was meine Glaskugel sagt, was du falsch gemacht hast.
    Also zu erst kannst du die While Schleife in der While Schleife löschen.
    Außerdem gehört dies hier nach ganz oben! Und auf keinen Fall in eine Schleife:

    [autoit]

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

    [/autoit]

    Des weiteren macht die Funktion Go nix anderes als das Skript zu pausieren.
    Änder das und poste dann das GANZE Skript!!
    DFPWare

  • Jetzt funktioniert zwar beiden, aber ich will, dass der HotKey erst funktioniert, wenn mein Hauptfenster bzw. das Haupt GUI offen ist, dann soll man erst F1 drücken können, davor soll bei F1 noch keine aktion ausgeführt werden.

    Nun folgendes Script:

    [autoit]

    FileInstall ( "realmadrid94rk.jpg", "")

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

    #include
    #include
    #include
    #include
    #include
    #include

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

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

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

    #Region ### START Koda GUI section ### Form=
    $Main = GUICreate("Kombofenster", 283, 106, 543, 415)
    GUISetFont(8, 400, 0, "Comic Sans MS")
    GUISetBkColor(0xFFFFFF)
    $combo = GUICtrlCreateCombo("Wähle aus!", 16, 16, 249, 25)
    GUICtrlSetData(-1, "Test01")

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

    $Start = GUICtrlCreateButton("Start", 64, 64, 153, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $msg = GUIGetMsg(1)
    Select
    Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $Main
    Exit
    Case $msg[0] = $Start
    If GUICtrlRead($combo) = "Test01" Then Start()
    EndSelect
    WEnd

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

    Func Start()
    #region - GUI Create
    GUIDelete($Main)
    $Main = GUICreate("Hauptfenster", 394, 218, 334, 389)
    GUISetFont(8, 400, 0, "Comic Sans MS")
    GUISetBkColor(0xFFFFFF)
    $Text = GUICtrlCreateLabel("Willkommen beim Script 001", 8, 16, 379, 22)
    GUICtrlSetFont(-1, 10, 400, 0, "Comic Sans MS")
    $Bild = GUICtrlCreatePic("realmadrid94rk.jpg", 8, 48, 113, 121, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    $Text01 = GUICtrlCreateLabel("Anleitung:", 136, 48, 56, 19)
    $Text02 = GUICtrlCreateLabel("Hier kommt Text rein", 136, 72, 232, 19)
    $Text03 = GUICtrlCreateLabel("Hier kommt Text rein", 136, 96, 175, 19)
    $Text04 = GUICtrlCreateLabel("Hier kommt Text rein", 136, 120, 179, 19)
    $Text05 = GUICtrlCreateLabel("Hier kommt Text rein", 136, 144, 175, 19)
    $Text06 = GUICtrlCreateLabel("Achtung!", 24, 184, 348, 20)
    GUICtrlSetFont(-1, 9, 800, 6, "Comic Sans MS")
    GUICtrlSetColor(-1, 0xFF0000)
    GUISetState(@SW_SHOW)

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

    While 1

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

    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    MsgBox (0, "Auf Wiedersehen!", "Besuch doch mal meine Website?!")
    ShellExecute("www.google.de")
    Exit
    Case $Bild
    ShellExecute("www.google.de")
    EndSwitch
    WEnd

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

    #endregion - GUI Create
    EndFunc

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

    Func Go ()
    If GUICtrlRead($Text05) = "Hier kommt Text rein" Then Go1()
    EndFunc

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

    Func Go1()
    Sleep (3000)
    Send ("Schritt 1 Erfolgreich")
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von DeathNote (12. Juli 2011 um 23:06)

  • Die Gui ist so schnell offen, das kannst du vernachlässigen:)
    Oder guck dir _IsPressed an
    DFPWare
    PS:Das FileInstall bitte an Zeile 11

    Da ich jetzt bei der ComboBox mehrere auswahlen habe brauch ich das nun. Denn wenn er bei der ComboBox die "Test01" auswählt, dann soll er F1 drücken können. Aber wenn er bei der ComboBox die "Test02" auswählt, soll er mit F2 beginnen können. Also ich will nicht, dass man eines auswählt aber sowohl F1 als auch F2 aktivieren kann.

  • Ich hätte jetzt an sowas gedacht:
    Schau dir Zeile 72-79 an.
    Da ich bei jeder GUI einen anderen Text habe, dachte ich mach ich einfach eine If reinbauen, die den Text abfragt und dann die Funktion startet.

    [autoit]

    FileInstall ( "realmadrid94rk.jpg", "")

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

    #include
    #include
    #include
    #include
    #include
    #include

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

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

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

    #Region ### START Koda GUI section ### Form=
    $Main = GUICreate("Kombofenster", 283, 106, 543, 415)
    GUISetFont(8, 400, 0, "Comic Sans MS")
    GUISetBkColor(0xFFFFFF)
    $combo = GUICtrlCreateCombo("Wähle aus!", 16, 16, 249, 25)
    GUICtrlSetData(-1, "Test01")

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

    $Start = GUICtrlCreateButton("Start", 64, 64, 153, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $msg = GUIGetMsg(1)
    Select
    Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $Main
    Exit
    Case $msg[0] = $Start
    If GUICtrlRead($combo) = "Test01" Then Start()
    EndSelect
    WEnd

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

    Func Start()
    #region - GUI Create
    GUIDelete($Main)
    $Main = GUICreate("Hauptfenster", 394, 218, 334, 389)
    GUISetFont(8, 400, 0, "Comic Sans MS")
    GUISetBkColor(0xFFFFFF)
    $Text = GUICtrlCreateLabel("Willkommen beim Script 001", 8, 16, 379, 22)
    GUICtrlSetFont(-1, 10, 400, 0, "Comic Sans MS")
    $Bild = GUICtrlCreatePic("realmadrid94rk.jpg", 8, 48, 113, 121, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    $Text01 = GUICtrlCreateLabel("Anleitung:", 136, 48, 56, 19)
    $Text02 = GUICtrlCreateLabel("Hier kommt Text rein", 136, 72, 232, 19)
    $Text03 = GUICtrlCreateLabel("Hier kommt Text rein", 136, 96, 175, 19)
    $Text04 = GUICtrlCreateLabel("Hier kommt Text rein", 136, 120, 179, 19)
    $Text05 = GUICtrlCreateLabel("Hier kommt Text rein", 136, 144, 175, 19)
    $Text06 = GUICtrlCreateLabel("Achtung!", 24, 184, 348, 20)
    GUICtrlSetFont(-1, 9, 800, 6, "Comic Sans MS")
    GUICtrlSetColor(-1, 0xFF0000)
    GUISetState(@SW_SHOW)

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

    While 1

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

    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    MsgBox (0, "Auf Wiedersehen!", "Besuch doch mal meine Website?!")
    ShellExecute("www.google.de")
    Exit
    Case $Bild
    ShellExecute("www.google.de")
    EndSwitch
    WEnd

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

    #endregion - GUI Create
    EndFunc

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

    Func Go ()
    If GUICtrlRead($Text05) = "Hier kommt Text rein" Then Go1()
    EndFunc

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

    Func Go1()
    Sleep (3000)
    Send ("Schritt 1 Erfolgreich")
    EndFunc

    [/autoit]
  • Ja müsste doch klappen, oder? Was hast du denn noch für ein Problem?

    Du musst nur noch in der Go1() die Funktion Start() starten.

    Und du solltest für überprüfungen nicht Send("") benutzen, sondern besser ConsoleWrite()

    DFPWare


    Nee, es soll ja wie folgt sein, ich öffne mein script, combobox öffnet sich. ich wähle aus und meine HauptGUI startet. Nun will ich dass wenn ich F1 drücke die Funktion Go startet.

    So, wie ich es ejtzt gemacht habe schließt sich die GUI nachdem ich F1 drücke und nichts passiert.

  • Habe mir es angeguckt, aber weiß nicht wie das mir helfen soll, also folgendes:

    Funktion "Go" soll erst dann gestartet werden können, wenn mein GUI mit "Hauptfenster" als Titeltext geöffnet ist. Falls mein GUI nicht geöffnet ist, soll beim drücken von F1 nicht passieren.

  • Hab jetz die scripte nicht gelesen, aber wie wärs wenn du einfach in der hotkeyfunktion, also in Go() prüft ob dein fenster aktiv ist?
    Wingettitle('[active]') oder ähnliches
    Einfach mit if abfragen, und wenns nicht deine gui ist dann funktion beenden mit return

  • Wie wärs denn stattdessen so?

    Spoiler anzeigen
    [autoit]

    #include <guiconstants.au3>
    #include <windowsconstants.au3>
    HotKeySet ("{F1}", "Go")
    Global $Text05
    Global $VARIABLEZUMTESTENOBDIEHAUPTGIOOFFENIST = 0
    #Region ### START Koda GUI section ### Form=
    $Main = GUICreate("Kombofenster", 283, 106, 543, 415)
    GUISetFont(8, 400, 0, "Comic Sans MS")
    GUISetBkColor(0xFFFFFF)
    $combo = GUICtrlCreateCombo("Wähle aus!", 16, 16, 249, 25)
    GUICtrlSetData(-1, "Test01")
    $Start = GUICtrlCreateButton("Start", 64, 64, 153, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $msg = GUIGetMsg(1)
    Select
    Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $Main
    Exit
    Case $msg[0] = $Start
    If GUICtrlRead($combo) = "Test01" Then Start()
    EndSelect
    WEnd

    Func Start()
    #region - GUI Create
    GUIDelete($Main)
    $Main = GUICreate("Hauptfenster", 394, 218, 334, 389)
    GUISetFont(8, 400, 0, "Comic Sans MS")
    GUISetBkColor(0xFFFFFF)
    $Text = GUICtrlCreateLabel("Willkommen beim Script 001", 8, 16, 379, 22)
    GUICtrlSetFont(-1, 10, 400, 0, "Comic Sans MS")
    $Text01 = GUICtrlCreateLabel("Anleitung:", 136, 48, 56, 19)
    $Text02 = GUICtrlCreateLabel("Hier kommt Text rein", 136, 72, 232, 19)
    $Text03 = GUICtrlCreateLabel("Hier kommt Text rein", 136, 96, 175, 19)
    $Text04 = GUICtrlCreateLabel("Hier kommt Text rein", 136, 120, 179, 19)
    $Text05 = GUICtrlCreateLabel("Hier kommt Text rein", 136, 144, 175, 19)
    $Text06 = GUICtrlCreateLabel("Achtung!", 24, 184, 348, 20)
    GUICtrlSetFont(-1, 9, 800, 6, "Comic Sans MS")
    GUICtrlSetColor(-1, 0xFF0000)
    GUISetState(@SW_SHOW)
    $VARIABLEZUMTESTENOBDIEHAUPTGIOOFFENIST = 1

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    MsgBox (0, "Auf Wiedersehen!", "Besuch doch mal meine Website?!")
    Exit
    EndSwitch
    WEnd
    #endregion - GUI Create
    EndFunc
    Func Go ()
    If $VARIABLEZUMTESTENOBDIEHAUPTGIOOFFENIST = 1 Then
    If GUICtrlRead($Text05) = "Hier kommt Text rein" Then Go1()
    EndIf
    EndFunc
    Func Go1()
    ConsoleWrite("OKAY"&@CRLF)
    EndFunc

    [/autoit]