Ich habe es für Windows hinbekommen, dass ich den Output eines Kommandozeilenprogrammes, das ich von meinem Programm aus starte, in ein Textfenster meines Lazarus GUI Programms umleite. Das habe ich wie folgt gemacht:
- CreateNamedPipe
- ConnectNamedPipe
- in eigenem Thread das Programm als Parameter von cmd.exe und mit > dahinter und dem Namen der Pipe ausgeführt (synchron)
- im eigenen Thread 300 ms Sleep, damit der Hauptprozess Zeit hat, den Rest der Pipe auszugeben
- im eigenen Thread dann DisConnectNamedPipe
- im Hauptprozess eine Schleife mit ReadFile, die beendet wird, wenn im anderen Thread DisConnectNamedPipe ausgeführt wird, weil dann ReadFile einen Error bzw. 0 Bytes zurückgibt.
Die Named Pipes scheinen so unterschiedlich zu sein, dass ich keinen platttform-unabhängigen Code gefunden habe, oder habe ich da etwas übersehen? TFileStream habe ich mir angesehen, glaube aber nicht, dass das geht. Es sind aber eh nur wenige OS-spezifische Aufrufe, also müßte ich nur die jeweiligen Unix-ähnlichen Aufrufe kennen.
Named Pipes Konsolenprogramm Output in GUI-App ausgeben
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Named Pipes Konsolenprogramm Output in GUI-App ausgeben
Lies dir doch mal diesen Wiki Eintrag durch:
http://wiki.lazarus.freepascal.org/Exec ... rograms/de
Dort wird auch Erklärt, wie man die Programme Ausgaben umleiten kann.
http://wiki.lazarus.freepascal.org/Exec ... rograms/de
Dort wird auch Erklärt, wie man die Programme Ausgaben umleiten kann.
MFG
Michael Springwald
Michael Springwald