在C#编程中,有时我们需要在应用程序中执行命令行(CMD)命令,但不希望显示命令提示符窗口。本文将详细介绍如何使用C#隐式运行CMD命令并隐藏命令窗口,特别是在WinForm应用中。 要实现这个功能,我们需要使用`System.Diagnostics.Process`类。这个类提供了启动、控制和与外部进程交互的能力。以下是一个简单的C# WinForm应用示例,它创建一个文本框让用户输入DOS命令,然后点击按钮执行命令并显示结果: ```csharp using System; using System.Diagnostics; using System.IO; using System.Windows.Forms; namespace RunDosCommandForm { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { ExcuteDosCommand(textBox1.Text); } private void ExcuteDosCommand(string cmd) { try { Process p = new Process(); p.StartInfo.FileName = "cmd"; p.StartInfo.UseShellExecute = false; // 关闭外壳执行,防止弹出命令窗口 p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; // 重定向错误输出 p.StartInfo.CreateNoWindow = true; // 隐藏命令窗口 p.OutputDataReceived += new DataReceivedEventHandler(sortProcess_OutputDataReceived); p.Start(); // 写入命令到命令行 StreamWriter cmdWriter = p.StandardInput; if (!String.IsNullOrEmpty(cmd)) { cmdWriter.WriteLine(cmd); } cmdWriter.Close(); // 开始监听输出数据 p.BeginOutputReadLine(); p.WaitForExit(); // 等待命令执行完成 p.Close(); } catch (Exception ex) { MessageBox.Show("执行命令失败,请检查输入的命令是否正确!"); } } // 事件处理程序,处理命令输出 private void sortProcess_OutputDataReceived(object sender, DataReceivedEventArgs e) { if (!String.IsNullOrEmpty(e.Data)) { this.BeginInvoke(new Action(() => { this.listBox1.Items.Add(e.Data); })); } } } } ``` 在这个示例中,`ExcuteDosCommand`方法是执行CMD命令的核心。它创建了一个`Process`对象,设置其属性以启动CMD进程,关闭命令窗口,重定向输入、输出和错误流。`StartInfo.FileName`设为"cmd",表示我们要启动CMD。`UseShellExecute`设为`false`,`RedirectStandardInput`和`RedirectStandardOutput`设为`true`,允许我们向命令行写入命令并读取输出。 `sortProcess_OutputDataReceived`方法是事件处理程序,用于接收命令的输出数据并将其添加到WinForm中的列表框(listBox1)中。使用`BeginOutputReadLine()`方法异步监听输出数据,避免阻塞UI线程。 此外,如果需要执行的命令已经保存为批处理文件(.bat),我们可以直接指定批处理文件的路径作为`FileName`,而不需要通过CMD来调用。例如: ```csharp Process p = new Process(); p.StartInfo.FileName = "cmd.bat"; p.StartInfo.UseShellExecute = false; // ...其他设置 p.Start(); ``` 通过使用`Process`类,我们可以方便地在C#应用中隐式运行CMD命令并捕获输出,无需显示命令窗口,从而提供更流畅的用户体验。在实际开发中,这种技术常用于执行系统管理任务、自动化过程或者集成其他命令行工具。













- 粉丝: 12
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 购销合同:软件购销合同购销合同购销合同(1).docx
- YD_T_2740.3-2014_无线通信室内信号分布系统_第3部分_放大器技术要求和测试方法(1).pdf
- 本科毕业设计--切碎机说明书含全集cad图纸(1).doc
- 2024年人工智能指数报告中文版
- 完整word版-软件项目需求分析总结-推荐文档.doc
- 数据库期末考试复习题及答案.doc
- 电子商务下的物流模式课件.pptx
- 移动数据库中实时事务处理的研究的开题报告.docx
- 浅谈中药电子商务系统中购物车的设计与实现(1).docx
- YD_T_2738-2014_2GHz_WCDMA_数字蜂窝移动通信网无线接入子系统设备技术要求(第七阶段)增强型高速分组接入(HSPA+)(1).pdf
- 毕业设计(论文)--基于plc的步进电机控制(2)(1).doc
- 基于51单片机的模拟电梯控制系统.doc
- 施工协调及接口管理措施(1).doc
- 中小学教师信息化教学能力提升策略获奖科研报告(1).docx
- 《建筑CAD》考试试题备答案(一)(最新整理).pdf
- 中铁四局集团信息化战略规划的开题报告.docx


