CreateProcess Handle?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Olaf_France

Betreff: CreateProcess Handle?

BeitragFr, Mai 07, 2021 17:45
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Mai 08, 2021 9:13
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Mai 08, 2021 14:26
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Mai 09, 2021 10:34
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Mai 09, 2021 11:08
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Smile
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

Olaf_France

BeitragSo, Mai 09, 2021 16:11
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group