1 Pluspunkt 0 Minuspunkte
Wie kann ich ein Programm in C# aufrufen aber die Ausgabe in einem String speichern anstatt sie direkt auf der Console zu printen?
von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Du kannst dazu dazu den Process Namespace und seine Eigenschaften StartInfo und StandardOutput verwenden.

using System;
using System.Diagnostics;
using System.IO;

class Program
{
    static void Main()
    {
        string executablePath = @"C:\Pfad\zum\DeinProgramm.exe";
        string arguments = "Argument1 Argument2"; // Füge hier deine Programmargumente hinzu

        string output = RunProcess(executablePath, arguments);

        Console.WriteLine("Ausgabe des Programms:");
        Console.WriteLine(output);
    }

    static string RunProcess(string executablePath, string arguments)
    {
        using (Process process = new Process())
        {
            ProcessStartInfo startInfo = new ProcessStartInfo
            {
                FileName = executablePath,
                Arguments = arguments,
                RedirectStandardOutput = true,
                UseShellExecute = false,
                CreateNoWindow = true
            };

            process.StartInfo = startInfo;
            process.Start();

            // Warte darauf, dass das externe Programm beendet wird
            process.WaitForExit();

            // Lese die Ausgabe des Prozesses
            using (StreamReader reader = process.StandardOutput)
            {
                return reader.ReadToEnd();
            }
        }
    }
}
von (732 Punkte)