『C#基础』调用CMD的一个小工具
由于经常要使用CMD的一些命令,比如查看IP,Ping一个网址之类的。于是就写了一个调用CMD.exe的小工具。
主要就是实现这样一个事情:调用CMD.exe然后传给它我想要执行的命令,最后获取结果。
界面:
代码:
主要执行代码using System.Diagnostics; using System.IO; namespace Client { class ExcuteCMD { static Process p = new Process(); public static string Excute(string cmd) { //创建Process对象 p.StartInfo.FileName = "cmd.exe"; //要调用的程序 p.StartInfo.UseShellExecute = false; //关闭Shell的使用 p.StartInfo.RedirectStandardInput = true; //重定向标准输入 p.StartInfo.RedirectStandardOutput = true; //重定向标准输出 p.StartInfo.RedirectStandardError = true; //重定向错误输出 p.StartInfo.CreateNoWindow = true; //设置不显示窗口 p.Start(); //启动进程 p.StandardInput.WriteLine(cmd); //要执行的命令 p.StandardInput.WriteLine("exit"); #region 吸收版权信息 p.StandardOutput.ReadLine(); p.StandardOutput.ReadLine(); p.StandardOutput.ReadLine(); p.StandardOutput.ReadLine(); p.StandardOutput.ReadLine(); #endregion string strRst = p.StandardOutput.ReadToEnd(); //从输出流获取命令执行结果 // logOut(strRst,cmd); // 记录执行到日志文件 return strRst; } public static void closeCMD() { p.Close(); } private static void logOut(string log,string cmd) { FileStream fs = new FileStream("log.txt", FileMode.OpenOrCreate, FileAccess.Write); StreamWriter sw = new StreamWriter(fs); sw.Flush(); sw.BaseStream.Seek(0, SeekOrigin.End); sw.WriteLine(cmd + log); sw.WriteLine(); sw.Flush(); sw.Close(); fs.Close(); } } }
WPF界面代码using System.Windows; using System.Windows.Input; namespace Client { /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); tbCmd.Focus(); } private void btnSubmit_Click(object sender, RoutedEventArgs e) { lblResult.Content = ExcuteCMD.Excute(tbCmd.Text); } private void btnClose_Click(object sender, RoutedEventArgs e) { ExcuteCMD.closeCMD(); this.Close(); } private void btnPingQQ_Click(object sender, RoutedEventArgs e) { lblResult.Content = ExcuteCMD.Excute("Ping www.qq.com"); } private void btnIPConfig_Click(object sender, RoutedEventArgs e) { lblResult.Content = ExcuteCMD.Excute("ipconfig"); } private void tbCmd_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Enter) { btnSubmit_Click(sender, e); } } } }
WPF界面代码<Window x:Class="Client.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="CMD命令执行工具" Height="300" Width="478" MinWidth="400" MinHeight="300" Icon="/Client;component/Images/21.ico"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="210*" /> <RowDefinition Height="28*" /> <RowDefinition Height="23*" /> </Grid.RowDefinitions> <Button Content="执行" Height="23" Margin="0,0,66,5" Name="btnSubmit" VerticalAlignment="Bottom" TabIndex="2" Click="btnSubmit_Click" HorizontalAlignment="Right" Width="60" Grid.Row="1" /> <TextBox Height="23" Name="tbCmd" VerticalAlignment="Bottom" Margin="0,0,132,5" TabIndex="1" Grid.Row="1" KeyDown="tbCmd_KeyDown" /> <Button Content="结束" Height="23" HorizontalAlignment="Right" Margin="0,0,0,5" Name="btnClose" VerticalAlignment="Bottom" Width="60" Click="btnClose_Click" Grid.Row="1" /> <ScrollViewer HorizontalAlignment="Stretch" Name="scrollViewer1" VerticalAlignment="Stretch"> <Label Height="Auto" Name="lblResult" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" /> </ScrollViewer> <Button Content="PingQQ" Height="23" HorizontalAlignment="Left" Name="btnPingQQ" VerticalAlignment="Top" Width="56" Click="btnPingQQ_Click" Grid.Row="2" /> <Button Content="IPConfig" Height="23" HorizontalAlignment="Left" Margin="62,0,0,0" Name="btnIPConfig" VerticalAlignment="Top" Width="56" Click="btnIPConfig_Click" Grid.Row="2" /> </Grid> </Window>
版权声明:
作者:莫不逢
出处:http://www.cnblogs.com/sitemanager/
Github:https://github.com/congjf
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。