Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 6
  • 665
Zaloguj się aby zadać pytanie
Pokrewne

Odpowiedź (1)

  • 3

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!

 

  • Odpowiedział
  • @ | 02.03.2015
  • TRENER ALTKOM AKADEMII