2016-05-06 8 views
2

Мне нужно скопировать выходные CMD-строки в текстовое поле, это возможно? если да, пожалуйста, Покажите мне некоторые, чтобы узнать, как справиться с этимКак скопировать процесс CMD.exe в текстовое поле C#

enter code here 
     private void pictureBox1_Click(object sender, EventArgs e) 
     { 
     label10.Visible = true; 
     string cmd = "/c adb install BusyBox.apk "; 
     System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
     proc.StartInfo.FileName = "cmd.exe"; 
     proc.StartInfo.Arguments = cmd; 
     proc.StartInfo.RedirectStandardError = true; 

     proc.StartInfo.UseShellExecute = false; 
     //proc.StartInfo.CreateNoWindow = true; 
     proc.StartInfo.RedirectStandardOutput = true; 
     proc.Start(); 

     proc.WaitForExit(); 
     pictureBox6.Visible = true; 
     label10.Text = "Installation Complete"; 
     // MessageBox.Show("Install Complete ..."); 
     DateTime Tthen = DateTime.Now; 
     do 
     { 
      Application.DoEvents(); 
     } while (Tthen.AddSeconds(4) > DateTime.Now); 
     label10.Visible = false; 
     pictureBox6.Visible = false; 

    } 
+1

Да, вам нужно подключить OutputDataReceived и ErrorDataReceived события и писать функции, которые будут вызвать в добавляемых к вашим текстовое поле в потоке пользовательского интерфейса. например см. [этот старый вопрос] (http://stackoverflow.com/q/1145969/243245) – Rup

+0

Да, это работает для меня, но .. не то, что я хочу ... Мне нужно прочесть его Шаг за шагом в точном значении I нужно показать, что происходит сейчас на CMD, и пропустить его на Textbot ... То, как я это сделал, - это ждать proc. для завершения и прохождения результата в текстовом поле ... - возможно ли сделать что-то подобное на C#? –

+0

См. Веб-страницу: https://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardoutput(v=vs.110).aspx – jdweng

ответ

1

Используйте это, то строка будет содержать весь вывод

proc.Start(); 
string line = proc.StandardOutput.ReadToEnd(); 

или для одной линии

proc.Start(); 
string line = proc.StandardOutput.ReadLine(); 

и если вы хотите, чтобы линия выводилась по линии, то

while (!proc.StandardOutput.EndOfStream) { 
    string line = proc.StandardOutput.ReadLine(); 
    // do your stuff 
} 

или вы можете попробовать этот вариант, сначала удалите proc.WaitForExit();, потому что ReadLine будет ждать, пока данные не будут доступны или поток будет закрыт. Когда поток закрыт, ReadLine вернется null.

string line; 
while ((line = proc.StandardOutput.ReadLine())!=null) 
{ 
    // textbox.text = line or something like that 
} 
+0

Да, это работает для меня, спасибо всем, но все еще что-то не хватает ... –

+1

@AbdoHurbly 'Еще что-то не хватает' заботиться о разработке? –

+0

какой недостающий пожалуйста? – Mostafiz

3

Ну вы уже настроили все, как нужно, единственное, что отсутствует:

string consoleOutput = proc.StandardOutput.ReadToEnd(); 
-1

Да, это работает для меня, но .. не то, что я хочу ... мне нужно читать его Шаг за шагом в точном значении мне нужно показать, что происходит сейчас на CMD, и пропустить его в Textbot ... То, как я это сделал, - это ждать proc. до конца и мимо Результат в текстовом поле ... что можно сделать что-то подобное в C#

enter code here 
     proc.StartInfo.Arguments = cmd; 
     proc.StartInfo.RedirectStandardError = true; 

     proc.StartInfo.UseShellExecute = false; 


     proc.Start(); 
     string line = proc.StandardOutput.ReadToEnd(); 
     textBox3.Text = line.ToString(); 
     proc.WaitForExit(); 
+0

Пожалуйста, добавьте это в свой исходный вопрос, вместо того, чтобы добавлять свой собственный (StackOverflow не работает как форум). Кроме того, это общепринято, чтобы отметить принятые ответы (щелкните значок слева от ответа @ Mostafizur-Rahman) –

+0

, так что мой последний ответ, если этого достаточно для этого? – Mostafiz

+0

Если вы хотите сделать то, что вы здесь описываете, я рекомендую закрыть этот вопрос (принимая ответ) и используя этот подход: http://stackoverflow.com/questions/7877601/c-sharp-capturing-windows-application- output –

 Смежные вопросы

  • Нет связанных вопросов^_^