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

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

