Ich will unter Windows mit einer anderen Anwendung kommunizieren. Bisher haben wir das über Named Pipes getan, doch nun fragt der andere, ob ich nicht auch auf stdout meinen Salm ausgeben kann.
Er will auf der anderen Seite den Text per stdin lesen können, aber meine Ausgaben auf Kommandozeile auch in eine Datei umleiten können. Mein Programm ist
VCL (fensterbasiert).
Kennt sich jemand damit aus? Wie können zwei Anwendungen über stdout --> stdin miteinander reden?
Per AttachConsole() kann ich zwar in meiner Anwendung mit WriteLn() Text in dem Konsolenfenster (was mich aufgerufen hat) ausgeben (Falls ich von cmd.exe aufgerufen wurde), allerdings ist irgendwas anders, als in einer klassischen Konsolenanwendung:
Die Umleitung der Ausgabe in eine Datei mit z.B. "XYZ.EXE > out.txt" funktioniert nicht. Der Prompt erscheint gleich nach Start meiner
VCL Anwendung wieder und meine Ausgaben landen dahinter. Bei der Konsolenanwendung kommt der Prompt erst, wenn das Programm fertig ist. Alle WriteLn() kommen dazwischen und die umleitung in ein Textfile geht wie es soll.
Was ist der Unterschied zwischen WriteLn() in einer Konsolenanwendung und
VCL Anwendung?
Wie kann ich mit
API Aufrufen WriteLn einer Konsolenanwendung nachempfinden? Reindebuggen in die Bibliotheken hat mein Hirn um 100 Jahre zurückgeworfen!!
Um WriteLn('BlaBlaBla') in
VCL zu machen habe ich vorher das hier aufgerufen:
Delphi-Quellcode:
ConsolePresent := AttachConsole(ATTACH_PARENT_PROCESS) AND (GetStdHandle(STD_OUTPUT_HANDLE) <> INVALID_HANDLE_VALUE);
...
if ConsolePresent then
Writeln('BlaBlaBla');
mfg