【发布时间】:2011-10-10 19:18:23
【问题描述】:
我在市场上寻找一个“选项卡式”命令提示符应用程序,因为我厌倦了多个命令提示符窗口使我的一个桌面屏幕变得杂乱无章,当时我想到了创建自己的命令提示符窗口的可能性。虽然我知道它不会像独立产品那样出色,但我认为创建自己的产品只是为了更熟悉“System.Diagnostic”类(Process、ProcessStartInfo 等)将是一个很好的练习我以前从未真正玩过。
我几乎刚刚创建了一个准系统 winforms 应用程序,它有 2 个选项卡(包含丰富的文本字段)、一个文本字段(用于输入命令)和一个按钮(用于实际运行命令)。
我发现了各种显示如何运行命令的帖子,但我在实际执行命令并将结果返回到 Richtextbox 时遇到了问题。这是我根据我现在所知道的信息创建的一种方法: (根据以前的答案更新)
public void GetConsoleOuput(string command)
{
string outputString;
ProcessStartInfo startupInfo = new ProcessStartInfo()
startInfo.FileName = "cmd.exe";
startInfo.RedirectStandardOuput = true;
startInfo.WindowStyle = ProcessWindowStyle.Hidden:
startInfo.UseShellExecute = false;
startInfo.Arguments("/C " + command);
Process process = new Process()
process.StartInfo = startInfo;
process.OutputDataReceived += new DataReceivedEventHandler(AppendRichBoxText);
process.Start()
process.BeginOutputReadLine();
process.WaitForExit();
process.Close();
}
public void AppendRichBoxTet(object sender, DataReceivedEventArgs args)
{
string outputString = args.Data;
// need to have the richTextBox updated using it's own thread
richTextBox.BeginInvoke( /* not sure what to put inside here */);
}
此方法的用途是不断将输出文本附加到富文本框。
在这一点上,我被困在如何执行 BeginInvoke 方法,以便这个richTextBox 将在它自己的线程上更新它的文本。
【问题讨论】:
-
我使用的是 cygwin 的 screen.exe,但我不知道它与 cmd.exe 的效果如何
标签: c# winforms process command-prompt