日期:2014-05-17  浏览次数:21035 次

救急啊!为什么代码写的cmd和直接运行的cmd会不一样?
我写了一个webservice的方法,目的是调用一个已经写好的winform程序。我在代码里写的如下
  System.Diagnostics.Process pro = new System.Diagnostics.Process();
  pro.StartInfo.FileName = "cmd.exe"; 
  pro.StartInfo.RedirectStandardInput = true;
  pro.StartInfo.RedirectStandardOutput = true;
  pro.StartInfo.UseShellExecute = false;
  pro.Start();
  pro.StandardInput.WriteLine("cd " + path);
  pro.StandardInput.WriteLine("start " + path + "A.exe");
  pro.StandardInput.WriteLine("exit");
那个exe启动到一半就自动关闭了,我查了一下是运行到this.InitializeComponent()出的问题,就是一开始加载控件的那里,但那些代码基本都是自动生成的啊,我直接双击A.exe可以正常启动,没有问题,直接开cmd,然后打
start path + A.exe
启动也没有问题,这究竟是怎么回事啊???
我本来想直接启动A.exe,就是pro.StartInfo.FileName = path + "A.exe";也不能成功,所以有没有什么办法解决呢?

ps:我用简单的程序测过没有问题,但我想要的程序或类似的程序就会出这种问题。

------解决方案--------------------
我觉得可能是this的问题,首先的程序是exe里面控件初始化的问题,那么pro.StartInfo.FileName = path + "A.exe";这个尝试就毫无意义,因为,程序可以找到这个exe 而是exe本身出了问题,我觉得应该是this的问题,你把this.去掉试试
------解决方案--------------------
在exit之前
pro.WaitForInputIdle();等待界面初始化完成

不过,你直接用Process运行exe不行吗?为什么要借用cmd呢????