stdin/stdout im eigenen Prozess verbiegen

04/10/2008 - 19:24 von R.-Erik Ebert | Report spam
Hallo NG,

kann man in eine Windows.Forms-Anwendung code, der stdin/stdout benutzt so
einbinden, dass beide irgendwie in Fenster umgeleitet werden?

Etwas genauer:

Ich will eine Bibliothek benutzen, die per P/Invoke eingebunden wird.
Innerhalb dieser Bibliothek gibt es Funktionen, die die Standardein- bzw.
Ausgabe benutzen. Ein einfacher Weg ist es, eine Konsolenanwendung zu
basteln, sie eben im main das übliche Application.Run(myForm) aufruft. Das
ist aber nicht schön, weil dann das Konsolenfenster neben der übrigen
Anwendung liegt (es einzusperren ist mir nicht gelungen).
Der Weg Console.SetOut/In mit überschriebenem TextReader/Writer geht auch
nicht. Dann landen zwar z.B. Console.Write-Ausgaben in meinem Fenster, nicht
aber die der Bibliotheksfunktionen.

Weiß jemand Rat?

Danke
Erik
 

Lesen sie die antworten

#1 Jochen Kalmbach [MVP]
04/10/2008 - 19:35 | Warnen spam
Hallo R.!

Ich will eine Bibliothek benutzen, die per P/Invoke eingebunden wird.
Innerhalb dieser Bibliothek gibt es Funktionen, die die Standardein- bzw.
Ausgabe benutzen. Ein einfacher Weg ist es, eine Konsolenanwendung zu
basteln, sie eben im main das übliche Application.Run(myForm) aufruft. Das
ist aber nicht schön, weil dann das Konsolenfenster neben der übrigen
Anwendung liegt (es einzusperren ist mir nicht gelungen).



Warum nicht? Du musst es nur entsprechend starten:
UseShellExecute = false;
NoWindow = true;

Ich würde diesen Weg wàhlen...

Der Weg Console.SetOut/In mit überschriebenem TextReader/Writer geht auch
nicht.



Was hier hilft ist:
http://support.microsoft.com/kb/105305/en-us

Aber dann kannst Du es gleich auf eine Pipe umleiten... aber wie gesagt;
ich würde es über einen eigenen Process machen!

Beachte dann bitte auch im .NET die neuen Funktionen um Consolen-Streams
auszulesen!
(BeginOutputReadLine, BeginErrorReadLine) in .NET 1.x musst man nàmlich
dazu einen Thread verwenden, um es richtig zu machen ;)

Greetings
Jochen

My blog about Win32 and .NET
http://blog.kalmbachnet.de/

Ähnliche fragen