Seite 1 von 1

Programm aus Programm starten und stoppen

Verfasst: 20.05.2012 12:45
von Stephan-X
Hallo Pure-Gemeinde am Sonntag,
ich starte aus einem Programm ein weiteres, soweit funzt das, nun soll nach Beendigung des zweiten Programms das vorherige weiterlaufen von einer bestimmten Stelle aus.. ? Das ist der Knackpunkt für mich, ich krich das nicht ? Hat mal jemand ne Idee. Danke.
:(

Re: Programm aus Programm starten und stoppen

Verfasst: 20.05.2012 13:08
von NicTheQuick
Schau dir dazu 'RunProgram()' und den Parameter '#PB_Program_Wait' an.

Und falls dein erstes Programm weiterlaufen soll während das zweite läuft, könnte 'ProgramRunning()' für dich interessant sein.

Re: Programm aus Programm starten und stoppen

Verfasst: 20.05.2012 13:32
von Stephan-X
OK Danke hat erst mal geholfen, habe mir dazu nochmal die Befehle dazu angesehen (TOLL) aber ein Problem ist jetzt .. die ersten zwei zeilen HideGadget(..) werden nun nicht berücksichtigt ! wo hab ich da einen Denkfehler !

Code: Alles auswählen

If  File = -1 
   HideGadget(#Datei,1)
   HideGadget(#GrundCon,0)   
 
   RunProgram(Home+"/Programme/G-Daten" ,"","",#PB_Program_Wait) 
   Goto start
EndIf
:)

Re: Programm aus Programm starten und stoppen

Verfasst: 20.05.2012 14:41
von NicTheQuick
Baue hinter die beiden 'HideGadget()'s folgende Zeile ein:

Code: Alles auswählen

While WindowEvent() : Wend
Das bewirkt, dass die Events, die durch 'HideGadget()' ausgelöst wurden, noch abgearbeitet werden, und somit auch wirklich Wirkung zeigen.

Allerdings ist es in einer GUI-Anwendung eher ratsam die Eventschleife nicht zu blocken, was du ja durch das 'RunProgram()' aber tust.
Aber du könntest z.B. das Hauptfenster mit 'DisableWindow()' deaktivieren und nach dem 'RunProgram()' wieder aktivieren, wobei ich mir nicht sicher bin, ob das was bringt.
Das Problem ist im Grunde folgendes: Wenn dein Fenster keine Events mehr abarbeitet, dann denkt Windows, dass dein Programm hängt und zeigt dann an "(keine Rückmeldung)" (oder so ähnlich).

Mit 'ProgramRunning()' könntest du das Problem umgehen, aber ich möchte jetzt keinen Code extra dafür schreiben um dir zu zeigen wie. Im Grunde musst du das Programm ohne '#PB_Program_Wait' starten und dann in deiner Eventschleife immer wieder prüfen, ob 'ProgramRunning()' noch einen Wert ungleich Null zurückgibt. Falls es das nicht mehr tut, weißt du, dass das externe Programm beendet wurde und dann kannst du irgendwo hin springen.