由于经常要使用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();#endregionstring 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>