Process-Problem
Process-Problem
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.
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.
- TroaX
- Beiträge: 720
- Registriert: 08.03.2013 14:27
- Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
- Wohnort: NRW
- Kontaktdaten:
Re: Process-Problem
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.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: N150 Mini-PC | 16 GB RAM | Debian 13+CasaOS
Coding: Purebasic, Spiderbasic, Gambas
Blog: https://techtroax.de
Repos: https://codeberg.org/TroaX
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: N150 Mini-PC | 16 GB RAM | Debian 13+CasaOS
Coding: Purebasic, Spiderbasic, Gambas
Blog: https://techtroax.de
Repos: https://codeberg.org/TroaX
Re: Process-Problem
Aber WriteProgramString() braucht doch eine ProgramID. Wie bekomme ich die von Programm B aus heraus?TroaX hat geschrieben:... die Programm B per WriteProgramString liefert auslesen.
Übrigens: danke für Deine interessanten Informationen.
Zuletzt geändert von es_91 am 11.06.2014 20:31, insgesamt 1-mal geändert.
Re: Process-Problem
http://purebasic.com/german/documentati ... ramid.htmles_91 hat geschrieben:Aber WriteProgramString() braucht doch eine ProgramID. Wie bekomme ich die von Programm B aus heraus?
Grüße ... Kiffi
a²+b²=mc²
Re: Process-Problem
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?
und Program A diese Ausgaben liest. Warum möchtest Du WriteProgramString() statt PrintN() nehmen?
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Re: Process-Problem
Irgendetwas begreife ich noch immer nicht.
/EDIT: @Danilo Warum geht das nicht?
test.pb --> test.exe
teststart.pb --> ausführen!
... ?
/EDIT2: Deshalb:
Die Zeile muss heißen:
Danke, Danilo !!!
... und ProgramID() braucht ein 'Program', wo bekomme ich das her?Kiffi hat geschrieben:http://purebasic.com/german/documentati ... ramid.htmles_91 hat geschrieben:Aber WriteProgramString() braucht doch eine ProgramID. Wie bekomme ich die von Programm B aus heraus?
Achso, alles klar. Das probiere ich gleich mal aus.Danilo hat geschrieben:Normalerweise ist das so gedacht, dass Programm B einfach an eine Konsole ausgibt (PrintN() usw.),
...
/EDIT: @Danilo Warum geht das nicht?
test.pb --> test.exe
Code: Alles auswählen
OpenConsole()
PrintN("Hallo, Welt!")
CloseConsole()Code: Alles auswählen
Program = RunProgram("test.exe", "", "", #PB_Program_Open | #PB_Program_Write)
String$ = ReadProgramString(Program)
Debug String$/EDIT2: Deshalb:
Code: Alles auswählen
#PB_Program_WriteCode: Alles auswählen
Program = RunProgram("test.exe", "", "", #PB_Program_Open | #PB_Program_Read)
Zuletzt geändert von es_91 am 12.06.2014 09:58, insgesamt 3-mal geändert.
Re: Process-Problem
"Program" ist der Rückgabewert von RunProgram().
Steht aber auch in der Hilfe.
Steht aber auch in der Hilfe.
Re: Process-Problem
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!!!RSBasic hat geschrieben:"Program" ist der Rückgabewert von RunProgram().
Steht aber auch in der Hilfe.
/EDIT: Problem gelöst, siehe meinem vorherigen Post. Viele Dank an Alle Beteiligten!
Zuletzt geändert von es_91 am 12.06.2014 09:59, insgesamt 1-mal geändert.
Re: Process-Problem
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?
/EDIT: Wo ist denn der Beitrag von RSBasic hin? Mit den Callbacks?
Re: Process-Problem
Oh sorry. Als ich deinen Edit sah, dass es sich erledigt hat, hab ich meinen Post wieder entfernt.
Hier als "Backup":
Hier als "Backup":
Entweder bin ich zu schnell oder zu langsam.RSBasic hat geschrieben: Achso sorrry.
Alternativ könntest du ein Callback nutzen, um Nachrichten während der Laufzeit zu verschicken.
http://www.rsbasic.de/aktualisierung/wi ... mserver.pb
http://www.rsbasic.de/aktualisierung/wi ... mclient.pb
Vielleicht ist es sogar besser für dein Vorhaben.

