Na przykład program , serwis wywołany z cmd line, plujący coś na ekran.
Na przykład program , serwis wywołany z cmd line, plujący coś na ekran.
Do uruchamiania zewnętrznych aplikacji służy metoda Process.Start z przestrzeni System.Diagnostics
Przykład uruchomienia notatnika:
Process.Start("notepad.exe");
Aplikacja uruchamiana jest w osobnym wątku, główny program nie czeka na zakończenie aplikacji i kontynuuje swoje działanie.
Jeśli chcemy przechwycić odpowiedź aplikacji, to musimy przekierować wyjście i ustawić odpowiednie parametry:
ProcessStartInfo start = new ProcessStartInfo { FileName = "cmd.exe", Arguments = "/c dir", UseShellExecute = false, RedirectStandardOutput = true, }; using (Process process = Process.Start(start)) { using (StreamReader reader = process.StandardOutput) { string result = reader.ReadToEnd(); Console.Write(result); } }
Przy przetwarzaniu większych strumieni danych proponuję przetwarzać krok po kroku:
ProcessStartInfo start = new ProcessStartInfo { FileName = "cmd.exe", Arguments = "/c dir", UseShellExecute = false, RedirectStandardOutput = true, }; using (Process process = Process.Start(start)) { using (StreamReader reader = process.StandardOutput) { while (!reader.EndOfStream) { string result = reader.ReadLine(); Console.Write(result); } } }
W przykładach pokazałem przekierowanie z powrotem na konsolę, ale można na dowolne inne wyjście.
Powodzenia!