关于C#使用Process运行exe程序的问题

我有一个exe的程序,需要在C#中调用到,情况是这样的,该exe是需要参数登录后,会进入到该程序的shell,等待输入命令的,这样的话C#就无法读取到最后那行了,并且用p... 我有一个exe的程序,需要在C#中调用到,情况是这样的,该exe是需要参数登录后,会进入到该程序的shell,等待输入命令的,这样的话C#就无法读取到最后那行了,并且用ps.StandardInput.WriteLine(" **** "); 也无法输入命令。有没有其他方法,或者怎样才能在该exe的shell里面输入命令??
那个程序的shell具体是下图那样:

我需要进入shell后,输入命令,但是发现如果直接用ps.StandardInput.WriteLine(" **** "); 的话,命令是输入不到这个shell的。需要怎样调整?或者有没有其他方法?(这个exe最终是调用java.exe的,我试过获取java.exe的句柄,然后往这个java.exe sendkey,是可以使用,但是这样的话不能整合我其他功能)
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
Jarhf
2014-02-14 · TA获得超过1862个赞
知道小有建树答主
回答量:1736
采纳率:25%
帮助的人:1071万
展开全部
应该可以吧,ps.StandardInput.WriteLine("xx")是报错,输入完没响应?
追问
不行的,用ps.StandardInput.WriteLine("xx")的话,要我手动kill掉那个exe,然后WriteLine才写到cmd里面,而不是写在我那个exe。或者是因为进入*.exe 的shell后,C#认为这个程序是没执行完的,所以不会WriteLine。
追答
//没太明白你说的,不过我用下面的方法执行一些exe程序都没问题
void Exc(string exe, string arg)
{
Process p = new Process();
p.StartInfo.FileName = exe;
p.StartInfo.Arguments = arg;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.EnableRaisingEvents = true;

p.Exited += new EventHandler(p_Exited);
p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
p.ErrorDataReceived += new DataReceivedEventHandler(p_ErrorDataReceived);

p.Start();
p.StandardInput.WriteLine("xxxxx");

p.BeginOutputReadLine();
p.BeginErrorReadLine();
}

void p_OutputDataReceived(Object sender, DataReceivedEventArgs e)
{
//e.Data
}
//字数超了,还有两个事件方法同上
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式