gpt4 book ai didi

c# - 从 Winforms 控制 cmd.exe

转载 作者:可可西里 更新时间:2023-11-01 08:56:57 25 4
gpt4 key购买 nike

问题:我想在winforms中控制cmd.exe

我并不是说单个进程中的每个命令,带有启动信息,然后停止。

我的意思是例如启动(我的)SQL 或 GDB 命令提示符,发送命令,接收答案,发送下一个命令,接收下一个答案,停止 SQL 命令提示符
退出流程。

基本上我想在任何控制台应用程序之上编写一个 GUI。

我想将 cmd.exe 的输出重定向到一个文本字段,而输入来自另一个文本字段(按下回车/确定按钮)。

我没有找到任何样本。有办法吗?

最佳答案

CodeProject 上有一个很好的例子

祝你好运!

-编辑:我认为这更像它,我创建了一个简单的表单、2 个文本框和三个按钮。第一个文本框用于命令输入,第二个(多行)用于显示结果。

第一个按钮执行命令,第二个按钮更新结果(因为结果是异步读取的)

namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
private static StringBuilder cmdOutput = null;
Process cmdProcess;
StreamWriter cmdStreamWriter;

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
cmdOutput = new StringBuilder("");
cmdProcess = new Process();

cmdProcess.StartInfo.FileName = "cmd.exe";
cmdProcess.StartInfo.UseShellExecute = false;
cmdProcess.StartInfo.CreateNoWindow = true;
cmdProcess.StartInfo.RedirectStandardOutput = true;

cmdProcess.OutputDataReceived += new DataReceivedEventHandler(SortOutputHandler);
cmdProcess.StartInfo.RedirectStandardInput = true;
cmdProcess.Start();

cmdStreamWriter = cmdProcess.StandardInput;
cmdProcess.BeginOutputReadLine();
}

private void btnExecute_Click(object sender, EventArgs e)
{
cmdStreamWriter.WriteLine(textBox2.Text);
}

private void btnQuit_Click(object sender, EventArgs e)
{
cmdStreamWriter.Close();
cmdProcess.WaitForExit();
cmdProcess.Close();
}

private void btnShowOutput_Click(object sender, EventArgs e)
{
textBox1.Text = cmdOutput.ToString();
}

private static void SortOutputHandler(object sendingProcess,
DataReceivedEventArgs outLine)
{
if (!String.IsNullOrEmpty(outLine.Data))
{
cmdOutput.Append(Environment.NewLine + outLine.Data);
}
}
}
}

在屏幕截图中你可以看到我输入了 cd\命令来更改目录,下一个命令在这个目录 (dir) 中执行。 alt text

关于c# - 从 Winforms 控制 cmd.exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4107683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com