.NET 调用外部exe程序,出现已停止工作

趁热打铁,赶紧记录下来。

本身调用,使用Process.Start(“XX.exe”);  基本上是没问题的,但是有些需要读取配置文件的exe程序(目前将出现停止工作的原因归为这个,您有想法,请留言)会出现“程序已停止工作”,其实原理也简单的,本身调用的时候,目录是自己bin文件夹的路径,之后你设置其他路径的时候,就会出现错误,可以用cmd调试测试下,直接打开cmd,将exe要调用的程序拉入cmd中执行,看是否出错,如果不出错,那么使用Process.Start(“XX.exe”);调用也没问题的,如果出错,则是路径的问题。

解决方法如下:

cmd测试:先cd到exe程序的所在目录,之后将exe拉进去执行,我这测试就没问题,正常运行了,于是就有下一步,c#程序操作cmd来调用exe程序。

程序实现cmd调用外部exe程序:

                        Process p = new Process();//新进程
                        p.StartInfo.FileName = "cmd.exe";//打开cmd程序
                        p.StartInfo.UseShellExecute = false;//不使用shell启动程序
                        p.StartInfo.RedirectStandardInput = true;
                        p.StartInfo.RedirectStandardOutput = true;
                        p.StartInfo.RedirectStandardError = true;
                        p.StartInfo.CreateNoWindow = true;//true表示不显示黑框,false表示显示dos界面
                        p.Start();//启动

                        p.StandardInput.WriteLine(@"cd");
                        p.StandardInput.WriteLine(proSystem + ":");//proSystem为程序所在盘
                        exePosition = "cd " + fileStrName + "Mobai.App" + "\" + btnName + @"inDebug";
                        p.StandardInput.WriteLine(exePosition);//执行程序所在目录
                        p.StandardInput.WriteLine(btnName);//执行程序具体位置

                        p.StandardInput.WriteLine("exit");//退出
                        p.Close();//关闭

 如果你打开的是记事本,或是config文件的话,去掉cd,直接打开地址.

原文地址:https://www.cnblogs.com/bkycjj/p/3255485.html