问题描述
情况是这样的,我用C++写了一个程序,可以在黑窗口显示信息并且可以运行完,然后我用命令行调用C++生成的.exe文件的时候也能够运行结束并且显示信息,但是当我用C#调用的时候,C++程序始终在运行不结束,于是我就想用黑窗口看信息,结果始终看不到信息,不知道应该怎么写,而且由于程序始终在运行,我也无法在其运行结束后获取信息输出,所以我现在完全不知道问题出在哪里,所以还是想用黑窗口看一下信息,我现在的代码是下面这样的,想问问应该怎么改能看到信息Processp=newProcess();p.StartInfo.FileName="cmd.exe";//禁止shell启动进程的使用p.StartInfo.UseShellExecute=false;//重定向输入设备p.StartInfo.RedirectStandardInput=true;//重定向输出设备p.StartInfo.RedirectStandardOutput=true;//重定向错误设备p.StartInfo.RedirectStandardError=true;//禁止在新窗口中显示该进程p.StartInfo.CreateNoWindow=false;//启动进程p.Start();//执行命令行p.StandardInput.WriteLine(egenTestCommond);//要记得加上Exit否则进程运行结束后还存在p.StandardInput.WriteLine("exit");
解决方案
解决方案二:
既然c++是你自己写的,干嘛不直接调试呢?
解决方案三:
就是您可能没明白我的意思,C++已经调试通过了,没有问题可以用,C++生成的.exe文件在命令行里面调用也没有问题,因为软件界面是用C#写的,所以需要用C#通过命令行调用C++生成的.exe文件,但是C#调用的时候就发生了进程执行不完,始终在执行的问题,所以不知道问题出在哪儿了
解决方案四:
就是您可能没明白我的意思,既然你的C++进程没有结束,为什么不打开那个工程,附加到该进程,暂停,马上就能知道执行到哪了
解决方案五:
删除c++程序,一切就顺当了。写到你的c#程序中(作为类库而提供其它组件使用)。
解决方案六:
引用2楼grape875499765的回复:
就是您可能没明白我的意思,C++已经调试通过了,没有问题可以用,C++生成的.exe文件在命令行里面调用也没有问题,因为软件界面是用C#写的,所以需要用C#通过命令行调用C++生成的.exe文件,但是C#调用的时候就发生了进程执行不完,始终在执行的问题,所以不知道问题出在哪儿了
你调试了的对象,不是标准输入输出机制。你只是“调试”它自己可以正常运行,有什么用呢?
解决方案七:
那我换个问题,我就是想知道比如最简单的一个命令行输出程序,如:#include<iostream>usingnamespacestd;intmain(){cout<<"helloworld"<<endl;return0;}在C#调用命令行的时候怎么能够在命令行里显示出来呢?在C#里面应该怎么写呢