原文 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();
    private void button1_Click(object sender, EventArgse)
      ExcuteDosCommand(textBox1.Text);
    private void ExcuteDosCommand(string cmd)
        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 += new DataReceivedEventHandler(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("执行命令失败,请检查输入的命令是否正确!");
    private void sortProcess_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(); 
C#调用执行命令行窗口cmd,及需要交互执行的处理
C#执行外部程序用到的是Process进程类,打开一个进程,可以指定进程的启动信息StartInfo(启动的程序名、输入输出是否重定向、是否显示UI界面、一些必要参数等)...
Rstudio常用快捷键以及窗口操作有用技巧
以下快捷键为平时小编用的比较多的,以前总是记不住这些枯燥的快捷键,只好找小本本记下,想用的时候翻翻本子,用着用着就印在脑子里了。现在整理起来写篇推送还是非常有意义的,这次配上小视频(gif),以便大家记忆。星数(⭐)表示常用指数,满星3颗,星越多越需要记下使用噢!
【Windows 逆向】OD 调试器工具 ( 显示模块窗口 | 显示记录窗口 | 显示内存窗口 | 显示线程 | 显示句柄 | 显示 CPU | 多窗口界面 )(二)
【Windows 逆向】OD 调试器工具 ( 显示模块窗口 | 显示记录窗口 | 显示内存窗口 | 显示线程 | 显示句柄 | 显示 CPU | 多窗口界面 )(二)
【Windows 逆向】OD 调试器工具 ( 显示模块窗口 | 显示记录窗口 | 显示内存窗口 | 显示线程 | 显示句柄 | 显示 CPU | 多窗口界面 )(一)
【Windows 逆向】OD 调试器工具 ( 显示模块窗口 | 显示记录窗口 | 显示内存窗口 | 显示线程 | 显示句柄 | 显示 CPU | 多窗口界面 )(一)
如何找到后台运行的隐藏程序 并非所有程序都可见地显示在您计算机的任务栏上。其他程序有意隐藏,因为它们充当有效的后台服务或进程,不需要通过任务栏进行持续访问。一些程序即使在关闭它们之后仍保持打开 这是一种常见的做法,尤其是对等实用程序,这些实用程序要求其他用户从计算机下载共享文件。