请问C#在通过命令行调用另一个程序的时候,如何让另一个程序的输出信息在新窗口中显示

问题描述

情况是这样的,我用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#里面应该怎么写呢

时间: 2024-10-30 16:30:46

请问C#在通过命令行调用另一个程序的时候,如何让另一个程序的输出信息在新窗口中显示的相关文章

命令行调用DoSWF

  应一些朋友的要求,今天在DoSWF中添加了命令行调用: -files 绝对文件路径列表,以空格相隔. 比如 -files c:test.swf "c:my swf filestest.swf" -encrypt 加密,携带参数为1或者2,分别代表加密方案1和2.比如 -encrypt 1 -obfuscate 混淆,携带特殊字段列表,以空格相隔:可为空.比如 -obfuscate checkName checkPSW -inject 注入随机代码,携带参数指定级别,1-10. 比如

java代码怎么写用命令行调用keytool生成证书

问题描述 java代码怎么写用命令行调用keytool生成证书 java代码怎么写用命令行调用keytool生成证书,最好具体一点,有注释最好 解决方案 http://blog.csdn.net/prstaxy/article/details/30050175http://blog.chinaunix.net/uid-17102734-id-2830223.html 解决方案二: java 调用 keytool 生成keystore 和 cer 证书Java调用命令行java调用命令行

pptp-Windows下如何用命令行调用PPTP拨号

问题描述 Windows下如何用命令行调用PPTP拨号 在Windows 2003下如何使用命令行建立PPTP连接,并拨号上VPN? 解决方案 使用命令行进行PPTP VPN拨号 sudo pptpsetup --create vpnname --server ip --username test --password test --encrypt --start start参数表示立即开始这个拨号 password密码是可选的,为了不在$HISTFILE里面留下痕迹,你可以传递这个参数,他会询

命令行调用w32dsm生成反汇编文件

问题描述 命令行调用w32dsm生成反汇编文件 求问,如何在命令行中调用w32dsm.exe,使其对一个文件反汇编并保存为alf文件? 解决方案 据我所知,w32dasm没有提供命令行的选项.如果你非要在命令行调用,需要写一个程序,它本身在命令行可以执行,它启动这个程序,模拟键盘鼠标的操作,模仿一个用户使用它,产生你要的反编译文件后关闭它. 解决方案二: http://www.pediy.com/kssd/pediy05/pediy50321.htm 解决方案三: 谢谢前面两位的回答,w32ds

命令行编译-用命令行调用编译程序前必须要调用call prefixvcvars32.bat吗?

问题描述 用命令行调用编译程序前必须要调用call prefixvcvars32.bat吗? 今天写程序需要用命令行调用,但之前需要调用call prefixvcvars32.bat,不知道是不是需要配置下环境,上网查了下,不是太懂啊,哪位大侠给指教啊!!! 解决方案 用bat批处理来做 先调用call prefixvcvars32.bat 然后再调用命令行的cl.exe去编译程序 解决方案二: 用bat批处理来做,再做一个总的bat 先调用call prefixvcvars32.bat 然后再

wget 可命令行调用的下载工具

可命令行调用的下载工具,有linux与windows版本. Wget [options] [url] -N,–timestamping只下载比本地新的文件 -t , 若下载失败的尝试次数 -P,  --directory-prefix=PREFIX  save files to PREFIX/... D:\Program Files\GnuWin32\bin>wget -P d:\yichu\ http://182.92.227.112/download/schtaskfile.zip 表示要下

先谢谢了!!!双击datagridview中显示的行后,在一个新的窗口中显示带有TEXTBOX同样内容\同样数据的程序,因为我要实现修改\添加数据,这样做比较直观

问题描述 双击datagridview中显示的行后,在一个新的窗口中显示带有TEXTBOX同样内容同样数据的程序,因为我要实现修改添加数据,这样做比较直观,最好给个代码,或源程序,谢谢了 解决方案 解决方案二:怎么没有人回答呀解决方案三:在SelectedIndexChanging事件中,把该行的主键取出来,然后window.open()新页面,参数传过去接下来就好做了吧,更新完毕关闭新开的窗口并刷新原来网页解决方案四:深更半夜的人本来就不多...解决方案五:///<summary>///双击

如何获取其它程序的命令行参数

开发环境:VC6 Windows XP 测试环境:WindowsXP 我们都知道,在程序里获取命令行参数很简单,WinMain函数会以参数的形式传递给我们,或者可以调用API GetCommandLine 获取.但是GetCommandLine函数不接受参数,获取的只是自己程序的命令行参数.那么如果我们想获取别的应用程序的命令行参数应该怎么办呢? 有的同学说,既然GetCommandLine只能获取本程序的命令行参数,我们可以在其它进程里插入一个Dll,在那个进程的地址空间调用GetComman

关于JVM命令行标志您不知道的5件事:调优JVM性能和Java运行时

JVM 是多数开发人员视为理所当然的 Java 功能和性能背后的重负荷机器.然而,我们很少有人能理解 JVM 是如何进行工作的 - 像任务分配和垃圾收集.转动线程.打开和关闭文件.中断和/或 JIT 编译 Java 字节码,等等. 不熟悉 JVM 将不仅会影响应用程序性能,而且当 JVM 出问题时,尝试修复也会很困难. 本期 5 件事 系列 将介绍一些命令行标志,您可以使用它们来诊断和调优您的 Java 虚拟机性能. 1. DisableExplicitGC 我已记不清有多少次用户要求我就应用程