zoukankan      html  css  js  c++  java
  • C#隐式执行CMD命令

    本文实现C#隐式执行CMD功能命令。下图是示例程序的主界面。

    在命令文本框输入DOS命令,点击“Run”button。在以下的文本框中输出执行结果。

    以下是程序的完整代码。

    本程序没有使用p.StandardOutput.ReadtoEnd()p.StandardOutput.ReadLine()方法来获得输出,由于这些方法运行后画面easy卡死。

    而是通过调用异步方法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(); 
    


     


     

     

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    js控制弹出窗口
    精品JS代码大全
    (转)QQ在线客服代码
    打字效果的实现方法
    “/”应用程序中的服务器错误。 操作必须使用一个可更新的查询。
    jQuery中 trigger() & bind() 使用心得
    (转)asp.net 的中的TimeSpan 详解
    (转)VS部分验证控件的实现方法
    Repeater控件嵌套使用
    图解使用Win8Api进行Metro风格的程序开发十三加解密
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4854566.html
Copyright © 2011-2022 走看看