Seite 1 von 1
RunProgram() #PB_Program_Wait wartet nicht
Verfasst: 20.06.2013 03:31
von Tsuki-Namida
Hallo,
ich möchte eine Externe Anwendung starten und meine Anwendung soll warten bis die Externe beendet ist...
Mit RunProgramm(Program,Parameter,"",#PB_Program_Wait) wartet meine Anwendung nicht und macht weiter, weshalb es zu fehlern kommt.
Aber auch mit
Code: Alles auswählen
x = RunProgramm(Program,Parameter,"",#PB_Program_Open | #PB_Program_Read)
While ProgramRunning(x)
WaitProgram(x)
Wend
habe ich das Problem....
Was kann man noch machen damit gewartet wird bis die externe Anwendung geschlossen wurde?
Ich hoffe das mir jemand Helfen kann...
Ach ja Starte ich meine Anwendung vom Benutzerverzeichnis funktioniert es aber es soll auch funktionieren wenn es installiert ist also von /usr/bin/
__________________________________________________
Code-Tags hinzugefügt
20.06.2013
RSBasic
Re: RunProgram() #PB_Program_Wait wartet nicht
Verfasst: 20.06.2013 13:32
von NicTheQuick
Welche Anwendung startest du denn konkret?
Bei manchen Programmen wie z.B. Firefox ist es so, dass normalerweise eh nur eine Instanz läuft. Startet man dann eine neue Instanz, sagt diese nur kurz der ersten, dass sie ein neues Fenster oder einen neuen Tab öffnen soll, und dann beendet sich die zweite Instanz auch schon wieder.
Möglicherweise startest du ein Programm, das das ähnlich macht.
Re: RunProgram() #PB_Program_Wait wartet nicht
Verfasst: 20.06.2013 14:10
von Tsuki-Namida
Ich starte den Terminal mit einem Script... also "gnome-terminal -x sh /zur/Script/datei"
Wie geschrieben, starte ich meine Anwendung im Home Verzeichnis wartet sie auf das Ende des Programms aber im System macht meine Anwendung gleich weiter -.-
Re: RunProgram() #PB_Program_Wait wartet nicht
Verfasst: 21.06.2013 06:18
von dysti
Irgendwie war im Forum schon eine ähnliche Frage, auch in Zusammenhang einer Rückgabe.
Kann das aber nicht wieder finden.
Aber die Lösung dieses Problems würde mich auch sehr interessieren.
Re: RunProgram() #PB_Program_Wait wartet nicht
Verfasst: 21.06.2013 11:56
von NicTheQuick
Kannst du ein funktionierendes Beispiel für mich machen? Alles zusammen in einem TAR oder so?
Re: RunProgram() #PB_Program_Wait wartet nicht
Verfasst: 21.06.2013 21:13
von Tsuki-Namida
Ok..
Ich habe den Programmausschnitt heraus genommen, und eine Ausgabe für die Konsole mit rein gemacht.
Code: Alles auswählen
If CountProgramParameters()
For i = 0 To CountProgramParameters() - 1
Parameter = Val(ProgramParameter(i))
Console = OpenConsole():PrintN("Verwendeter Parameter: "+Str(Parameter))
Next
EndIf
If FindString(ProgramFilename(),GetHomeDirectory(),1)
If Console : PrintN("Diese Anwendung wird im Homeverzeichnis ausgeführt."+Chr(13)+ProgramFilename()):EndIf
MessageRequester("Home","Diese Anwendung wird im Homeverzeichnis ausgeführt."+Chr(13)+ProgramFilename())
Else
If FindString(ProgramFilename(),"/tmp/",1)
If Console : PrintN("Diese Anwendung wird im Tempverzeichnis ausgeführt."+Chr(13)+ProgramFilename()):Else
MessageRequester("Temp","Diese Anwendung wird im Tempverzeichnis ausgeführt."+Chr(13)+ProgramFilename()):EndIf
Else
If Console : PrintN("Diese Anwendung wird im Systemverzeichnis ausgeführt."+Chr(13)+ProgramFilename()):Else
MessageRequester("System","Diese Anwendung wird im Systemverzeichnis ausgeführt."+Chr(13)+ProgramFilename()):EndIf
EndIf
EndIf
If OpenWindow(0,0,0,100,100,"Testanwendung",#PB_Window_ScreenCentered)
ButtonGadget(1,5,5,90,90,"Anwendung"+Chr(13)+"öffnen und"+Chr(13)+"startetn")
Repeat
Event = WaitWindowEvent()
If Event
Select EventGadget()
Case 1
Program.s = OpenFileRequester("Executable öffnen","/usr/bin/","Executable (*.*)|*.*",0)
If Console:PrintN(Program+" ausgewählt"):EndIf
If Parameter = 1
Anwendung = RunProgram(Program,"","",#PB_Program_Wait)
If Console:PrintN(Program+" gestartet. Prozessnummer: "+Str(Anwendung)):EndIf
ElseIf Parameter = 2
Anwendung = RunProgram(Program,"","",#PB_Program_Open | #PB_Program_Read)
If Console:PrintN(Program+" gestartet. Prozessnummer: "+Str(Anwendung)):EndIf
While ProgramRunning(Anwendung)
WaitProgram(Anwendung)
If Console:PrintN("Anwendung ist noch aktiv: "+Str(Anwendung)):EndIf
Wend
EndIf
If Console:PrintN("Die Anwendung '"+ GetFilePart(Program)+"' wurde beendet ."):Else
MessageRequester("","Die Anwendung '"+ GetFilePart(Program)+"' wurde beendet ."):EndIf
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow Or Exit = 1
End
EndIf
Wie es aus sieht liegt es aber am Terminal... Ich habe diesen Text auch gleich ausprobiert... anfangs habe ich immer den gnome-terminal geöffnet und das Ergebnis war immer das selbe, wie oben beschrieben aber als ich mal eine andere Anwendung nahm zum Beispiel gedit funktionierten beide varianten...
Jetzt stellt sich mir die Frage, wie erfahre ich ob der Terminal fertig ist....
Lg