Zapisywanie wyjścia innego programu

0

W mojej aplikacji po naciśnięciu buttona zostaje uruchomiony inny program, nienapisany przeze mnie i uruchomiający się w konsoli, chciałbym aby do textbox'a została skopiowana zawartość wyjścia tego programu, niestety nie wiem jak to zrobić. Pomożecie rozwiązać mi ten problem?
Przy okazji, czy istnieje sposób, by nie pojawiało się okienko z tym uruchamiającym się programem, tak by użytkownik się nie zorientował, że jest on odpalany?

0

Proszę
http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo(v=vs.110).aspx
przejrzyj sobie właściwości. W szczególności polecam RedirectStandardOutput i UseShellExecute

0

Dziwna sprawa, niby działa tak jak chciałem, ale dla tego programu z którego korzystam nie można odczytać danych na wyjściu. Sprawdziłem na własnych programach i tam nie ma problemu z odczytaniem wyjścia i zapisaniem go do pola tekstowego.

Oto mój kod:

        private void tidyToolStripMenuItem_Click(object sender, EventArgs e)
        {
           ProcessStartInfo testingProcess = new ProcessStartInfo(@"bin\tidy.exe");
           testingProcess.RedirectStandardOutput = true;
           testingProcess.UseShellExecute = false;
           testingProcess.CreateNoWindow = false;
           testingProcess.Arguments = @"-e te.html";

           Process p = Process.Start(testingProcess);
           p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
           p.BeginOutputReadLine();
        }

        void p_OutputDataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)
        {
            AppendOutputTextbox(e.Data);
        }

        private void AppendOutputTextbox(string data)
        {
            if (InvokeRequired)
            {
                this.BeginInvoke((Action)delegate()
                {
                    AppendOutputTextbox(data);
                });
            }
            else
            {
               richTextBox1.Text += data + Environment.NewLine;
            }
        }
0

Sprawdź czy przypadkiem dane nie lecą na standard error. Domyślnie to też konsola

0

A jak mam to zrobić, bo nie mam pojęcia?

0

Rusz głową i zacznij używać dokumentacji. Zamiast RedirectStandardOutput ustaw RedirectStandardError:

http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandarderror.aspx

1 użytkowników online, w tym zalogowanych: 0, gości: 1