C#隐式运行CMD命令(隐藏命令窗口)
作者:junjie 发布时间:2023-05-03 17:41:32
标签:C#,隐式,运行,CMD,命令,隐藏
本文实现了C#隐式运行CMD命令的功能。下图是实例程序的主画面。在命令文本框输入DOS命令,点击“Run”按钮,在下面的文本框中输出运行结果。
下面是程序的完整代码。本程序没有使用p.StandardOutput.ReadtoEnd()和p.StandardOutput.ReadLine()方法来获得输出,因为这些方法执行后画面容易卡死。而是通过调用异步方法BeginOutputReadLine来获取输出,并在事件p.OutputDataReceived的事件处理方法中来处理结果。
using System;
using System.Diagnostics;
using System.IO;
using System.Windows.Forms;
namespace RunDosCommandForm
{
publicpartialclassForm1 : Form
{
publicForm1()
{
InitializeComponent();
}
privatevoidbutton1_Click(object sender, EventArgse)
{
ExcuteDosCommand(textBox1.Text);
}
privatevoidExcuteDosCommand(string cmd)
{
try
{
Process p = newProcess();
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 += newDataReceivedEventHandler(sortProcess_OutputDataReceived);
p.Start();
StreamWriter cmdWriter = p.StandardInput;
p.BeginOutputReadLine();
if (!String.IsNullOrEmpty(cmd))
{
cmdWriter.WriteLine(cmd);
}
cmdWriter.Close();
p.WaitForExit();
p.Close();
}
catch(Exception ex)
{
MessageBox.Show("执行命令失败,请检查输入的命令是否正确!");
}
}
privatevoidsortProcess_OutputDataReceived(object sender,DataReceivedEventArgs e)
{
if(!String.IsNullOrEmpty(e.Data))
{
this.BeginInvoke(newAction(() => { this.listBox1.Items.Add(e.Data);}));
}
}
}
}
我们还可以将需要运行的CMD命令保存为BAT文件,再使用Process类来执行。
Process p = new Process();//设定调用的程序名,不是系统目录的需要完整路径
p.StartInfo.FileName = "cmd.bat";//传入执行参数
p.StartInfo.Arguments = "";
p.StartInfo.UseShellExecute = false;//是否重定向标准输入
p.StartInfo.RedirectStandardInput = false;//是否重定向标准转出
p.StartInfo.RedirectStandardOutput = false;//是否重定向错误
p.StartInfo.RedirectStandardError = false;//执行时是不是显示窗口
p.StartInfo.CreateNoWindow = true;//启动
p.Start();
p.WaitForExit();
p.Close();


猜你喜欢
- 假设我们有一个类:Productpublic class Product{ public string
- 本文实例为大家分享了Java swing 仿QQ账号密码输入框,供大家参考,具体内容如下主要思路是自己定义 AccountPanel 和 P
- The java.io.Writer.flush() method flushes the stream. If the stream ha
- 目录一、 * 简介二、 * 的多种实现1. 基于JDK的实现2. 基于cglib的实现三、为什么要有基于cglib的实现四、两种方式的适
- 本文实例为大家分享了C#点餐系统的具体代码,供大家参考,具体内容如下using System;using System.Collection
- 使用Java语言编写一个模拟网上超市购物结算功能的程序,要求程序运行后有一个图形用户界面,可供用户输入购买的各种商品相关信息,最后给出用户的
- 前言本章内容主要研究一下java高级特性-反射、android注解、和 * 的使用,通过了解这些技术,可以为了以后实现组件化或者Api h
- 如下图所示,你的UI元素可能小于48dp,图标仅有32dp,按钮仅有40dp,但是他们的实际可操作焦点区域最好都应达到48dp的大小。为使小
- 本文就是会将数组里面的单词进行倒序排列 例如 how old are you -> you are old how示例程序输出结果:t
- 一个请求从客户端发出到达服务器,然后被处理的整个过程其实是非常复杂的。本博客主要介绍请求到达服务器被核心组件DispatcherServle
- 建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。使用场景:当创建复杂对象的算法应该独
- 本文实例讲述了Android保持屏幕常亮唤醒状态的方法。分享给大家供大家参考,具体如下:第一步: 首先添加权限:<uses-permi
- 在前面介绍的代码中有使用特性,这些特性都是Microsoft定义好的,作为.NET Framework类库的一部分,许多特性都得到了C#编译
- 今天没有继续学习新知识点,画出了一个随鼠标画出的 图形,知识点全都是之前学的,话不多说,先上图:代码部分: // ope
- 今天传图片,用的base64字符串,POST方法,前端传送的时候总是莫名其妙的崩溃,去网上搜了半天,以为是文件大小被限制了,但是我这个是字符
- 虽然文章的标题是词法分析,但首先还是要从编译原理说开来。编译原理应该很多人都听说过,虽然不一定会有多么了解。简单的说,编译原理就是研究如何进
- reduce()简介Reduce 原意:减少,缩小根据指定的计算模型将Stream中的值计算得到一个最终结果解释:reduce 操
- 今天因为发布swagger-spring-boot-starter做一个问题的修复,然后碰到了下面这个问题,记录一下解决过程,帮助后续碰到类
- springboot aop里的@Pointcut()的配置@Pointcut("execution(public * com.w
- 使用Java实现图像分割,供大家参考,具体内容如下为减少动画制作过程中的IO操作,我们可以使用连续动画来改善动画播放效率。假如我们有如下的一