2

出力CMD行をテキストボックスにコピーする必要がありますか? はいの場合は、対処方法を教えてください

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;

    }
4

2 に答える 2

3

すでに必要に応じてすべてを設定していますが、不足しているのは次のとおりです。

string consoleOutput = proc.StandardOutput.ReadToEnd();
于 2016-05-06T10:19:35.917 に答える
1

これを使用すると、行に出力全体が含まれます

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

または1行

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
}
于 2016-05-06T10:19:28.287 に答える