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
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.
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
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.
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
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
@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
Probier mal, ob der Stream
Process.GetCurrentProcess().StandardOutput
Deine Daten enthaelt.