CreateProcess Handle?
Übersicht![](/themes/Standard/arrow.png)
![](/themes/Standard/arrow.png)
![]() |
Olaf_FranceBetreff: CreateProcess Handle? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo
Ich habe eine Frage bezüglich Processe und Handle Es geht um folgendes: ein Hauptprogramm öffnet mit CreateProcess(..) eine KonsolenApp, um mit dieser zu komunizieren. Die App soll Eeingaben verarbeiten und ein Ergebniss zurückgeben. Das soll über Die Standart-Ein und Aus-Gabe erfolgen. Problem: beim Aufruf von CreateProcess() wird ein Handle zurückgegeben das ich zum senden der Datan an die App nutzen muss! ABER!!! um die Daten in der App einzulesen, brauche ich ja auch ein Stream-Handle!!! Woher bekomme ich dieses? Ich kann ja nicht einmal was einlesen ohne dieses Handle??? Wer weiss was und würde mich dran teihaben lassen? Olaf |
||
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus |
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
CreateProcess![]() Das Beispiel da beschreibt genau, wie du Daten aus dem anderen Programm liest. (man kann das Handle für beides Lesen&Schreiben benutzen) Falls du es noch nicht hast, man kann die Hilfe vom BBP auch in die IDE einbinden, dann kannst du mit F1 direkt zu den Befehlen mit Beispiel springen. |
||
![]() |
Olaf_France |
![]() Antworten mit Zitat ![]() |
---|---|---|
count-doku hat Folgendes geschrieben: CreateProcess
![]() Das Beispiel da beschreibt genau, wie du Daten aus dem anderen Programm liest. (man kann das Handle für beides Lesen&Schreiben benutzen) Falls du es noch nicht hast, man kann die Hilfe vom BBP auch in die IDE einbinden, dann kannst du mit F1 direkt zu den Befehlen mit Beispiel springen. Die BBP-Hilfe ist eingebunden(seit ein paar jahren) Das Problem ist, das ich im Hauptprogramm zwar ein Handle zum lesen/schreiben habe, aber die aufgerufene App kennt das handle ja garnicht! wie gebe ich also daten von App an Hauptprogramm zurück? Ich muss ja, wenn ich die App schreibe, auch einen Stream zum HP haben, weiss aber ja nicht welches das sein könnte. Die App kann ja auch von anderen HP's aufgerufen werden (nicht gleichzeitig)! Olaf |
||
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus |
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die aufgerufene Datei braucht dabei keine Stream-Handles, sondern schreibt auf stdout, also dem gleichen Output, den man sieht, wenn man Programme über die Konsole aufruft.
Soweit ich weiß kann BB/B+/B3D standardmäßig nicht auf stdout schreiben. In BlitzMax kann man über Print() auf stdout schreiben, und mit Input() von stdin lesen. Ums simpel zu machen: Jedes Programm bekommt, wenn es gestartet wird, drei Streams, die zwischen dem aufgerufenen Programm und dem aufrufenden Programm geöffnet werden. stdin: Damit kann das aufrufende Programm Daten an das aufgerufene Programm schicken stdout: Das ist der Rückkanal, mit dem das aufgerufene Programm an das aufrufende Programm Daten schicken kann stderr: Das ist ein zweiter Rückkanal für Fehlermeldungen. Du kannst das in Aktion sehen, wenn du ein Kommandozeilenfenster öffnest (unter Windows drück Windowstaste+R und gib in das Fenster cmd ein). Das öffnet ein Terminalfenster, in welchem dann das Programm cmd geöffnet wird. Alles was du eintippst wird an stdin von cmd geschickt, und alles was cmd will, dass du siehst, schickt es dann über stdout zurück. Und das Terminalfenster leitet einfach alles was du tippst an das stdin von cmd weiter, und alles was von stdout/stderr vom cmd kommt, wird am Bildschirm angezeigt. Das BB/B+/B3D nicht mit stdout/stdin/stderr interagieren kann ist blöd, passt aber leider zur Sprache. Vielleicht findest du irgendwo eine Userlib, die dir erlaubt, in diesen Streams zu interagieren. |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
tft |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ganz ........ mal nachdenken. Auf was können alle Programme auf dem PC zugreifen ??????? Genau. Netzwerk Kommunikation über die Locale IP "127.0.0.1" Also einfach beide Programme darüber Kommunizieren lassen. Ist noch dazu selbst mit TCP sehr flott und zuverlässig.
Gruss TFT PS: Ihr könnt gerne mal auf meinem YouTube Channel vorbei schaun. Ein Abo dalassen und ein Like und so ![]() |
||
TFT
https://www.sourcemagic.ch Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!! |
![]() |
Olaf_France |
![]() Antworten mit Zitat ![]() |
---|---|---|
tft hat Folgendes geschrieben: Ganz ........ mal nachdenken. Auf was können alle Programme auf dem PC zugreifen ??????? Genau. Netzwerk Kommunikation über die Locale IP "127.0.0.1" Also einfach beide Programme darüber Kommunizieren lassen. Ist noch dazu selbst mit TCP sehr flott und zuverlässig.
... Das ist ein ansatz, den ich mal teste! hab mit Netzwerk und so gar keine Erfahrung, sieht aber schon mal gut aus in der BBP-Hilfe Olaf |
||
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus |
Übersicht
![](/themes/Standard/arrow.png)
![](/themes/Standard/arrow.png)
Powered by phpBB © 2001 - 2006, phpBB Group