由于经常要使用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>
转载于:https://my.oschina.net/skyler/blog/706086
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/108953.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...