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());
            }
posted @ 2011-06-24 10:24  千禧牛  阅读(1819)  评论(0)    收藏  举报