Named Pipes Konsolenprogramm Output in GUI-App ausgeben

Antworten
Martin V
Beiträge: 142
Registriert: Sa 30. Jan 2010, 19:35
OS, Lazarus, FPC: Linux64, Wiindows32, MacOS, Lazarus 1.8.2
CPU-Target: xxBit

Named Pipes Konsolenprogramm Output in GUI-App ausgeben

Beitrag von Martin V »

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.

pluto
Lazarusforum e. V.
Beiträge: 7178
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

Beitrag von pluto »

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.
MFG
Michael Springwald

Antworten