C#隱式運行CMD命令(隱藏命令窗口)
本文實現(xiàn)了C#隱式運行CMD命令的功能。下圖是實例程序的主畫面。在命令文本框輸入DOS命令,點擊“Run”按鈕,在下面的文本框中輸出運行結(jié)果。

下面是程序的完整代碼。本程序沒有使用p.StandardOutput.ReadtoEnd()和p.StandardOutput.ReadLine()方法來獲得輸出,因為這些方法執(zhí)行后畫面容易卡死。而是通過調(diào)用異步方法BeginOutputReadLine來獲取輸出,并在事件p.OutputDataReceived的事件處理方法中來處理結(jié)果。
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("執(zhí)行命令失敗,請檢查輸入的命令是否正確!");
}
}
privatevoidsortProcess_OutputDataReceived(object sender,DataReceivedEventArgs e)
{
if(!String.IsNullOrEmpty(e.Data))
{
this.BeginInvoke(newAction(() => { this.listBox1.Items.Add(e.Data);}));
}
}
}
}
我們還可以將需要運行的CMD命令保存為BAT文件,再使用Process類來執(zhí)行。
Process p = new Process();//設(shè)定調(diào)用的程序名,不是系統(tǒng)目錄的需要完整路徑 p.StartInfo.FileName = "cmd.bat";//傳入執(zhí)行參數(shù) p.StartInfo.Arguments = ""; p.StartInfo.UseShellExecute = false;//是否重定向標(biāo)準(zhǔn)輸入 p.StartInfo.RedirectStandardInput = false;//是否重定向標(biāo)準(zhǔn)轉(zhuǎn)出 p.StartInfo.RedirectStandardOutput = false;//是否重定向錯誤 p.StartInfo.RedirectStandardError = false;//執(zhí)行時是不是顯示窗口 p.StartInfo.CreateNoWindow = true;//啟動 p.Start(); p.WaitForExit(); p.Close();
- C# 執(zhí)行CMD命令并接收返回結(jié)果的操作方式
- C# 調(diào)用命令行執(zhí)行Cmd命令的操作
- C# 使用相同權(quán)限調(diào)用 cmd 傳入命令的方法
- C#調(diào)用CMD命令實例
- c#通過進程調(diào)用cmd判斷登錄用戶權(quán)限代碼分享
- C# cmd中修改顯示(顯示進度變化效果)的方法
- C#中調(diào)用命令行cmd開啟wifi熱點的實例代碼
- 通過C#調(diào)用cmd來修改服務(wù)啟動類型
- 在asp.net(c#)下實現(xiàn)調(diào)用cmd的方法
- C#中隱式運行CMD命令行窗口的方法
- C#程序調(diào)用cmd.exe執(zhí)行命令
相關(guān)文章
C#執(zhí)行表達(dá)式樹(Expression Tree)的具體使用
本文將深入探討表達(dá)式樹的基本概念、創(chuàng)建方法、修改和刪除節(jié)點、查詢和遍歷技巧以及在C#中的應(yīng)用示例,具有一定的參考價值,感興趣的可以了解一下2024-03-03
Winform開發(fā)中使用下拉列表展示字典數(shù)據(jù)的幾種方式
這篇文章介紹了Winform開發(fā)中使用下拉列表展示字典數(shù)據(jù)的幾種方式,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-09-09
利用MySqlBulkLoader實現(xiàn)批量插入數(shù)據(jù)的示例詳解
MySQLBulkLoader是MySQL?Connector/Net類中的一個類,用于包裝MySQL語句。本文將利用MySqlBulkLoader實現(xiàn)批量插入數(shù)據(jù)功能,感興趣的可以了解一下2022-06-06
C#中獲取二維數(shù)組的行數(shù)和列數(shù)以及多維數(shù)組各個維度的長度
這篇文章介紹了C#中獲取二維數(shù)組的行數(shù)和列數(shù)以及多維數(shù)組各個維度的長度,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12
SQL Server存儲過程在C#中調(diào)用的簡單實現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于SQL Server存儲過程在C#中調(diào)用的簡單實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用SQL Server存儲過程具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05

