Hallo
Ich wollte Fragen ob es möglich ist eine DOS Anwendung zu starten und den Text den die Anwendung auf den Bildschirm schreibt in einen String oder ArrayList zu speichern?
Unter Delphi habe ich es mit der API Funktion "CreateProcess" gemacht, könnte ich zwar auch unter C# so machen, wollte aber wissen ob es eine einfachere Methode gibt.
cya
dos? .net? ähh...
Fuck the System. Es lebe die Revolution!
Hallo
Deine Antwort bringt mich kein stück weiter.
[Text editiert]
man du bist ja richtig cool...
man nennt es konsolenprogramme und nicht dos-programme. 😁
man kann aus dem .net framework heraus keine programme ausführen. 😁
das was du da machst ist einfach einen prozess starten, der ein externes programm repräsentiert.
Fuck the System. Es lebe die Revolution!
Erstens: Ich nenne es deshalb DOS-Programm damit alle wissen das ich keine .NET Konsolen Anwendung meine.
Zweitens: Ich will kein programm starten sondern den Text den das Programm auf die Konsole schreibt, in einen string speichern.
Drittens: Habe ich bereits eine lösung gefunden.
cya
Hallo!
Kannst du die Lösung evtl. Posten? Mich würde interessieren was du meinst. Ich habe das nicht so ganz verstanden was du willst. Eine Eingabe entgehennehmen oder eine Ausgabe von deinem Programm in z.B. einen String speichern?
@Thread:
Was die Konsole betrifft so gibt es in VS genau 2 mögliche Konsolen:
.NET-Konsolenprogramm
Win32-Konsolenprogramm
Was für C# allerdings hinfällig ist, weswegen man dort auch nur eine zur Auswahl hat, nämlich die Konsolenanwendung. Mehr braucht man bei C# auch nicht da dort eigentlich alles Managed ist und man ohne System-NS wenig machen kann bzw. gar nichts.
In C++ sieht das wieder anders aus, da gibt es eine ganz klare Unterscheidung, was ich auch gut finde. Da hat man immer gleich ein riesen Projekt bei .NET und bekommt erstmal eine Console.WriteLine Anweisung vor die Nase gesetzt.
.NET-Konsole = Managed Code Projekt
Win32-Konsole = (Nach wenigen Änderungen) ANSI/ISO C++ Projekt
Und ich glaube das hier jeder Wissen sollte was mit einer DOS-Anwendung gemeint ist. Wem DOS-Anwendung nicht gefällt der kann es dann für sich behalten!
Code-Hacker
Hallo
Also hier die Lösung des Problems:
ProcessStartInfo si = new ProcessStartInfo();
si.FileName = "<Your .EXE HERE>";
si.Arguments = " <Your Arguments Here>";
si.UseShellExecute = false;
si.RedirectStandardError = true;
si.RedirectStandardOutput = true;
si.CreateNoWindow = true;
Process p = new Process();
p.StartInfo = si;
p.Start();
string output = p.StandardOutput.ReadToEnd();
string errorOutput = p.StandardError.ReadToEnd();
p.WaitForExit();
Der code startet eine Konsolenanwendung und speichert den Ausgabe Text der Anwendung (Der Text der auf die Konsole geschrieben wird) in einen String.
cya
Original von Nostalb
HalloAlso hier die Lösung des Problems:
ProcessStartInfo si = new ProcessStartInfo(); si.FileName = "<Your .EXE HERE>"; si.Arguments = " <Your Arguments Here>"; si.UseShellExecute = false; si.RedirectStandardError = true; si.RedirectStandardOutput = true; si.CreateNoWindow = true; Process p = new Process(); p.StartInfo = si; p.Start(); string output = p.StandardOutput.ReadToEnd(); string errorOutput = p.StandardError.ReadToEnd(); p.WaitForExit();
Der code startet eine Konsolenanwendung und speichert den Ausgabe Text der Anwendung (Der Text der auf die Konsole geschrieben wird) in einen String.
cya
Achso. Ja sowas habe ich auch mal gemacht und in eine Datei gespeichert, z.B. als ich die User im Netzwerk wissen wollte und noch nicht wusste wie es geht. Du hättest auch einfach die Ausgabe umleiten können.
Code-Hacker