cmdコマンドの結果をrichtextboxに表示する際に問題が発生しました。 "Console.WriteLineを(e.Data)を、" 私が交換しようとしたcmdコマンドを入力してrichtextboxに結果を表示するC#
private void richTextBox2_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
e.Handled = true;
e.SuppressKeyPress = true;
ProcessStartInfo cmdStartInfo = new ProcessStartInfo();
cmdStartInfo.FileName = @"C:\Windows\System32\cmd.exe";
cmdStartInfo.RedirectStandardOutput = true;
cmdStartInfo.RedirectStandardError = true;
cmdStartInfo.RedirectStandardInput = true;
cmdStartInfo.UseShellExecute = false;
cmdStartInfo.CreateNoWindow = true;
Process cmdProcess = new Process();
cmdProcess.StartInfo = cmdStartInfo;
cmdProcess.OutputDataReceived += cmd_DataReceived;
cmdProcess.EnableRaisingEvents = true;
cmdProcess.Start();
cmdProcess.BeginOutputReadLine();
cmdProcess.BeginErrorReadLine();
cmdProcess.StandardInput.WriteLine(richTextBox2.Text);
cmdProcess.StandardInput.WriteLine("exit");
cmdProcess.WaitForExit();
richTextBox1.Text = richTextBox1.Text + cmd_DataReceived + Environment.NewLine;
}
}
static void cmd_DataReceived(object sender, DataReceivedEventArgs e)
{
Console.WriteLine("Output from other process");
Console.WriteLine(e.Data);
}
: はこれまでのところ、私はこのコードを持っています"richTextBox1.Text = richTextBox1.Text +(e.Data);"それは受け入れられないだろう。 私も "richTextBox1.Text = richTextBox1.Text + cmd_DataReceived"を試しました。 しかし、それはietherでは動作しませんでした。 は、それから私はmessagebox.show(e.data)でConsole.WriteLineをを交換しようとしたが、再び...いや コマンドが動作しますが、それは私がコードのほとんどをコピーし、それはおそらく意味を知っている
は表示されませんコンソールアプリケーション用。あなたはcmdProcess.WaitForExit
で終了するプロセスを待っているとして
あなたがここでやろうとしているものは明らかではありません。 richtextboxの内容をInputStreamに書き込むので、richtextboxにcmd.exeの引数を書き込んでコマンドプロンプトに渡したいと思うようですが、結果をrichtextboxに表示するように質問します。ところで、CMD.EXEへの呼び出しでは、パラメータなしで出力はありません。 – Steve
hmm。すべてのコマンドにすべてのコマンドプロンプトの回答を追加する場合を除き、これはほとんど不可能です。 はい、私はあなたがそれを正しく理解したと思います。 – KrisPus
私は他の誰かが非常に似たようなことをするのを手伝っていました。あなたのコードはうまく見えますが、あなたの唯一の問題はイベントが自分のスレッドで実行されていて、どのスレッドからもUIを更新できないということです。UIスレッドからしか更新できません。ここで私の要素から少し外れていますが、InvokeまたはBeginInvokeを使用する必要があります。また、Dispatcher(例:[ここ])(http://stackoverflow.com/questions/4446048/how-to-update-textboxes-in -main-thread-from-another-thread)と[here](http://stackoverflow.com/questions/19009174/dispatcher-invoke-vs-begininvoke-confusion)を参照してください。 – Quantic