【问题标题】:run the command in opened cmd在打开的cmd中运行命令
【发布时间】:2013-04-10 15:12:27
【问题描述】:

我的 C# 项目(Windows 窗体应用程序)有问题。 我有两个按钮。当我单击第一个时,它将打开 cmd。一切正常。

我想要达到的目标: 按钮 2 应该使用打开的 cmd,插入命令并从中收集输出。我不想为每个命令打开 cmd。会有更多不同命令的按钮。

有可能吗?

private void button3_Click(object sender, EventArgs e)
        {
            string my_script = textBox3.Text;
            System.Windows.Forms.MessageBox.Show(my_id.ToString());

        }

        public int my_id;
        public void connection_Click(object sender, EventArgs e)
        {

            System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
            startInfo.FileName = "cmd.exe";
            System.Diagnostics.Process process = new System.Diagnostics.Process();
            process.StartInfo = startInfo;
            process.Start();
            my_id = process.Id;
    }

【问题讨论】:

  • 您正在使用 cmd 窗口执行 SQL 语句?
  • 你想运行什么类型的命令?
  • 搜索“捕获控制台输出”,你会找到一堆解决方案
  • 我不想将它用于 SQL 语句。我想添加几个按钮。他们每个人都应该运行不同的命令。例如按钮 2 将运行命令“systeminfo”,按钮 3 将运行命令“hostname”等等...

标签: c# winforms process


【解决方案1】:

您可以使用 process.StandardInput 发送命令来执行 cmd.exe,并使用 process.StandardOutput 来读取结果。

【讨论】:

  • 问题是我不想用每个按钮启动 cmd。我想打开它一次,其他按钮应该只向这个打开的控制台发送命令。
  • 您无需在每次单击按钮时都启动它。第一次用/K参数打开,不会自动关闭。然后将命令写入process.StandardInput。这就像直接在 cmd 窗口中输入它们一样。
  • 对不起,我是编程初学者。我该怎么做?我将尝试添加我拥有的整个代码,给我一秒钟
  • 您可以在您的类中创建一个字段process,将其分配给新进程一次,然后从按钮处理程序将数据写入 process.StandardInput。
  • 好的,非常感谢,我会试试的,但我不确定我是否会成功,反正现在非常感谢你
【解决方案2】:

也许您最好在您的应用程序中嵌入一个控制台,以尝试与外部控制台进行通信。

阅读:http://www.codeproject.com/Articles/335909/Embedding-a-Console-in-a-C-Application

【讨论】:

  • hmmm 很有趣,我将不得不更深入地阅读它。看控制台对我来说并不重要。命令可以在后台运行。如果没有更容易的事情,这也可能有所帮助。我会让你知道。感谢您的回复。
  • 也就是说,大多数时候,Alex's answer 会满足这样的要求。你真的应该解释你必须运行什么样的命令来帮助我们理解你的目标。
  • 点击 Button1 - cmd 将被打开;单击 Button2 - 命令“systeminfo”将在打开的 cmd 中执行;单击 Button3 - 命令“主机名”将在打开的 cmd 中执行
猜你喜欢
  • 2013-08-09
  • 1970-01-01
  • 1970-01-01
  • 2013-03-25
  • 1970-01-01
  • 1970-01-01
  • 2014-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多