Laden...

Consolen-Ausgaben des eigenen Programms bzw. einer DLL davon (in TextBox) umleiten

Erstellt von ogre vor 11 Jahren Letzter Beitrag vor 11 Jahren 2.385 Views
O
ogre Themenstarter:in
123 Beiträge seit 2006
vor 11 Jahren
Consolen-Ausgaben des eigenen Programms bzw. einer DLL davon (in TextBox) umleiten

Hallo,

ich habe schon mehrere Stunden bei Google und Co. zugebracht, aber leider ohne Erfolg. Ich hoffe, dass mir hier jemand helfen kann.

Folgendes Problem:

Ich habe ein C# Programm, welches eine C++ Dll Importiert. Ich möchte nun, dass alle Output Befehle, also alles was im Visual Studio im Output Fenster erscheint in eine Form (Textbox...) ausgegeben / umgeleitet wird.
Ich habe schon mehrere Dinge ausprobiert

TraceListener,

_writer = new TextBoxStreamWriter(this.textBox2);
Console.SetOut(_writer);

Das Funktioniert alles Wunderbar innerhalb eines C# Projektes, aber nicht mit DllImport.
Kann man überhaupt die cout / printf Daten in eine Texbox umleiten? Ich meine wenn sie im Visual Studio Output Window erscheinen sollte das gehen oder??

thx oge

C
258 Beiträge seit 2011
vor 11 Jahren

Ich kann mich noch daran erinnern das wir in der Schulzeit mal als beispiel die stdout in ein Textfile umgeleitet haben, das habe ich dazu gefunden.

stdout umleiten

Wie das ganze in C# Funktioniert kann ich dir leider nicht sagen jedoch kannst du (falls du dazu nichts findest) die umleitung einfach in eine Weitere C++ DLL schachteln welche dir die Daten umleitet und dann diese DLL einbinden

4.942 Beiträge seit 2008
vor 11 Jahren

Hallo,

wie wird denn in der C++ DLL die Ausgabe erzeugt, mittels "OutputDebugString"?
Dann könnte evtl. DbMon.NET - A simple .NET OutputDebugString capturer etwas für dich sein.

O
ogre Themenstarter:in
123 Beiträge seit 2006
vor 11 Jahren

Danke erstman für eure Hinweise!

@Console32: Ich wollte nicht den Umweg über ein Textfile gehen.

@Th69: Funktioniert leider nicht mit der Importierten C++ Dll Bibliotek

Hat vielleicht noch einer eine Idee?
ogre

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo ogre,

man kann die Ausgabe nicht nur in eine Datei, sondern auch (per Pipe) auf einen anderen Prozess umleiten. Auch nicht so toll, aber immerhin bieten sich dadurch einige Varianten, wie man an die Daten kommt, je nachdem wie man die Funktionalität auf die beiden beteiligten Prozesse aufteilt und wie die beiden Prozesse untereinander kommunizieren.

herbivore

C
258 Beiträge seit 2011
vor 11 Jahren

@Console32: Ich wollte nicht den Umweg über ein Textfile gehen.

Das wollte ich damit auch nicht sagen, aber wenn man den stdout stream auf ein File leiten kann geht bestimmt auch noch etwas anderes.
Sowas in der Art habe ich gemeint Redirect stdout to a string

Wenn du den Stream in einer C++ DLL abfängst und als Rückgabewerte weitergibst sollte das ganze so funktionieren wie du es brauchst

W
872 Beiträge seit 2005
vor 11 Jahren

Probier mal, ob der Stream


 Process.GetCurrentProcess().StandardOutput 

Deine Daten enthaelt.