程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#隱式運轉CMD敕令(隱蔽敕令窗口)

C#隱式運轉CMD敕令(隱蔽敕令窗口)

編輯:C#入門知識

C#隱式運轉CMD敕令(隱蔽敕令窗口)。本站提示廣大學習愛好者:(C#隱式運轉CMD敕令(隱蔽敕令窗口))文章只能為提供參考,不一定能成為您想要的結果。以下是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(); 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved