Seite 1 von 1
Process-Problem
Verfasst: 11.06.2014 14:19
von es_91
Hi.
Ich habe ein ziemlich großes Programm A geschrieben, dieses soll ein Programm B aufrufen und einen Wert oder einen String von diesem zurückerhalten.
Wie geht das? Wie ermittle ich von Programm B aus die ID von Programm A, um per WriteProgramString() auf dieses zuzugreifen?
Programm B soll also wie eine Funktion funktionieren, Werte per ProgramParameter() übernehmen und einen Rückgabewert abliefern. Geht das überhaupt?
Schöne Grüße,
es_91.
Re: Process-Problem
Verfasst: 11.06.2014 19:53
von TroaX
The Gimp ist das beste Beispiel, das so etwas geht. Denn wenn du einen Filter aufrufst, ist dieser als kompilierte Executable vorhanden. Du rufst zum Beispiel mit Parametern das Programm B aus Programm A heraus mit RunProgram auf. Danach kannst du aus Programm A heraus per ReadProgramString die Rückgabe, die Programm B per WriteProgramString liefert auslesen.
Re: Process-Problem
Verfasst: 11.06.2014 20:21
von es_91
TroaX hat geschrieben:... die Programm B per WriteProgramString liefert auslesen.
Aber WriteProgramString() braucht doch eine ProgramID. Wie bekomme ich die von Programm B aus heraus?
Übrigens: danke für Deine interessanten Informationen.

Re: Process-Problem
Verfasst: 11.06.2014 20:28
von Kiffi
es_91 hat geschrieben:Aber WriteProgramString() braucht doch eine ProgramID. Wie bekomme ich die von Programm B aus heraus?
http://purebasic.com/german/documentati ... ramid.html
Grüße ... Kiffi
Re: Process-Problem
Verfasst: 11.06.2014 20:30
von Danilo
Normalerweise ist das so gedacht, dass Programm B einfach an eine Konsole ausgibt (PrintN() usw.),
und Program A diese Ausgaben liest. Warum möchtest Du WriteProgramString() statt PrintN() nehmen?
Re: Process-Problem
Verfasst: 12.06.2014 09:44
von es_91
Irgendetwas begreife ich noch immer nicht.
... und ProgramID() braucht ein 'Program', wo bekomme ich das her?
Danilo hat geschrieben:Normalerweise ist das so gedacht, dass Programm B einfach an eine Konsole ausgibt (PrintN() usw.),
...
Achso, alles klar. Das probiere ich gleich mal aus.
/EDIT: @Danilo Warum geht das nicht?
test.pb --> test.exe
teststart.pb --> ausführen!
Code: Alles auswählen
Program = RunProgram("test.exe", "", "", #PB_Program_Open | #PB_Program_Write)
String$ = ReadProgramString(Program)
Debug String$
... ?
/EDIT2: Deshalb:
Die Zeile muss heißen:
Code: Alles auswählen
Program = RunProgram("test.exe", "", "", #PB_Program_Open | #PB_Program_Read)
Danke, Danilo !!!
Re: Process-Problem
Verfasst: 12.06.2014 09:46
von RSBasic
"Program" ist der Rückgabewert von RunProgram().
Steht aber auch in der Hilfe.
Re: Process-Problem
Verfasst: 12.06.2014 09:53
von es_91
RSBasic hat geschrieben:"Program" ist der Rückgabewert von RunProgram().
Steht aber auch in der Hilfe.
Ja, ihr Lieben, das weiß ich alles, das habe ich auch gelesen. Aber Program B ruft doch nicht Program A auf, sondern Program A ruft Program B auf! Da hat Program B weder ein RunProgram(), noch eine ProgramID in sich!!!
/EDIT: Problem gelöst, siehe meinem vorherigen Post. Viele Dank an Alle Beteiligten!
Re: Process-Problem
Verfasst: 12.06.2014 10:00
von es_91
Das klingt gut. Ich schau mir das gleich mal an. Vielen Dank, RSBasic.
/EDIT: Wo ist denn der Beitrag von RSBasic hin? Mit den Callbacks?

Re: Process-Problem
Verfasst: 12.06.2014 10:03
von RSBasic
Oh sorry. Als ich deinen Edit sah, dass es sich erledigt hat, hab ich meinen Post wieder entfernt.
Hier als "Backup":
Entweder bin ich zu schnell oder zu langsam.
