C#运行CMD程序 并获取结果
有时候要用别人的程序, 而他的算法都在一个控制台程序里面, 我们没必要知道他的算法细节 只需要结果就行。所以可以在我们的程序里面去执行他的CMD程序 然后获取运算结果就ok。我这里的需求起源于要用一个硬件加密信息,别人写好了一个cmd程序,运行一下就能拿到这个加密后的信息。。。废话少说直接贴代码好了~
string hidPath = @"HID.exe"; try { if (File.Exists(hidPath)) { Process cmd = new Process();
cmd.StartInfo.FileName = hidPath;
//将cmd的标准输入和输出全部重定向到.NET的程序里
cmd.StartInfo.UseShellExecute = false; //此处必须为false否则引发异常
cmd.StartInfo.RedirectStandardInput = true; //标准输入
cmd.StartInfo.RedirectStandardOutput = true; //标准输出
//不显示命令行窗口界面
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmd.Start(); //启动进程
//保存文本文件 执行结果保存在里面
saveFileDialog1.ShowDialog();
Stream stream = saveFileDialog1.OpenFile();
byte[] buffer = System.Text.Encoding.Default.GetBytes(cmd.StandardOutput.ReadToEnd());
stream.Write(buffer, 0, buffer.Length);
stream.Close();
cmd.WaitForExit();//等待控制台程序执行完成
cmd.Close();//关闭该进程
}
else
{
MessageBox.Show(null, "系统文件遗失,请确保HID.exe文件存放在程序目录下!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
this.Dispose();
}
}
catch (Exception ex)
{
Log.WriteErr(ex.ToString());
}
浙公网安备 33010602011771号