Skocz do zawartości

Przechwycenie konsoli


Rekomendowane odpowiedzi

Witam. Próbuję w C# napisać program, który przechwytuje cmd.exe.

Używam metod StandardOutput oraz StandardInput. Problem w tym, że potrzebuję zrobić tak, że najpierw wpisuję polecenie, następnie otrzymuję odpowiedź, i konsolka jest gotowa do wprowadzenia kolejnego polecenia.

Męczę się z tym już 2 godziny, próbowałem różnych metod i zastanawia mnie, dlaczego poniższy kod nie działa. Tzn. przechwytuje tekst, ale po skończeniu dalej próbuje to robić i program się wysypuje.

while (!(p.StandardOutput.EndOfStream))
{
  ans += p.StandardOutput.ReadLine();
}

 

p.StandardOutput.ReadToEnd() - wysypuje program.

 

Sądzę, że to koliduje z wejściem, bo kiedy zamknę strumień wejścia ("p.StandardInput.Close()"), to ReadToEnd() nie wysypuje programu. To by była dobra opcja, ale niestety nie da się chyba znów przywrócić.

 

Z góry dziękuję za pomoc.

 

@EDIT

W skrócie chodzi mi o to, żeby odpalić cmd.exe i wyjście przenosić do RichTextBoxa, a wejście wprowadzać za pomocą TextBoxa. Tak żebym mógł normalnie poruszać się po folderach itp.

Teoretycznie już wiem jak to zrobić ale jest pewne ale.

p.StandardInput.WriteLine(@polecenie);
p.StandardInput.Flush();
p.StandardInput.Close();
wynik = p.StandardOutput.ReadToEnd();

Ten kod wtedy działa, ale jak potem otworzyć strumień wejścia?

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 rok później...

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...