Button für externen Programmaufruf reagiert nur einmal

  • Guten Morgen,

    Ich sitze hier schon länger an einer "Kleinigkeit" und komme einfach nicht weiter.

    Ich erstelle eine GUI, mit der man über einen Butten z.B. mein DBprog öffnen kann. beim ersten Klick funktioniert das tadellos. Aber sobald das (über den Butten gestartete) Dbprog geschlossen wird, reagiert mein "StartButton" nicht auf weitere Klicks.

    Hier mal mein Code:

    [autoit]

    #include <GUIConstantsEx.au3>

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

    $var1 = RegRead("HKEY_CURRENT_USER\Software\DBprog\Connect", "Host")
    $var_db1 = RegRead("HKEY_CURRENT_USER\Software\DBprog\Connect", "datenbank")
    $button1_text = $var_db1 & " auf " &$var1

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

    $mainwindow = GUICreate("Datenbank- Auswahl", 400, 200)

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

    GUICtrlCreateLabel("Welches Schweinerl hättens denn gern?", 30, 10)

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

    $connect=GUICtrlCreateButton( $button1_text, 30, 50, 250)

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

    GUISwitch($mainwindow)
    GUISetState(@SW_SHOW,$mainwindow)

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

    While 1
    $msg = GUIGetMsg()

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

    Select
    Case $msg = $connect

    Run("C:\Program Files\DBPROG\dbprog.exe")

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

    $test = WinWaitActive("update", "OK");

    If $test > 0 Then
    Run("C:\Program Files\dbprog\dbprog.exe")
    WinClose("dbprog_start")
    WinClose("dbconnect")

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

    Else
    Run("C:\Program Files\dbprog\dbprog.exe")

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

    EndIf

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

    Case $msg = $GUI_EVENT_CLOSE
    MsgBox(0, "GUI Event", "You clicked CLOSE! Exiting...")
    ExitLoop
    EndSelect
    WEnd

    [/autoit]

    Kann mir jemand auf die Sprünge helfen, ich möchte, dass der Button auch nach dem ersten starten noch auf weitere Klicks reagiert, damit ich das DBProg nochmal starten kann.

    Vielen Dank für eure Hilfe


    Gruß

    Madmax

    • Offizieller Beitrag

    WinWaitActive wartet bis zum Sanktnimmerleinstag (ohne Timeout), wenn das Updatefenster nicht auftaucht. ;)
    Mit anderen Worten: das Skript wird an dieser Stelle pausiert, bis das Fenster auftaucht (die While-Schleife wird nicht weiter durchlaufen).
    Teste lieber innerhalb der While-Schleife mit "If WinExists("update", "OK") Then...", ob das Fenster existiert.

  • Hallo zusammen!

    @ AutoBert: Das Programm möchte ich ja nicht zweimal starten, sondern das Programm nocheinmal starten, wenn ich die erste Instanz desselben Programms beendet habe.

    Ich möchte also mit dem ersten Klick auf den Button mein DBPROG starten, dann das DBPROG nutzen und wieder schließen. Danach erscheint ja wieder meine AutoIT -Gui. Wenn ich dann über den Button das DBPROG nochmal starten möchte, reagiert der Button nicht mehr.
    Ich hab auch schon nach nicht-beendeten Prozessen meines DBPROGs gesucht, sind auch nicht vorhanden.

    Oscar : komischerweise startet die AUTOIT-Gui mein DBPROG beim ersten klick auf den Button, also kanns doch eigentlich nicht an "winwaitactive"
    liegen, oder? Aber ich werds auf jeden Fall ausprobieren.

    Erstmal vielen Dank für eure Hilfe, vielleicht habt ihr noch ein paar tips

    Gruß

    Madmax