有一种情况,我需要根据从命令提示符窗口接收到的输出不断地读取、写入和处理一些东西。例如,如果命令窗口正在寻找输入,我需要向用户显示一个消息框。有没有办法做到这一点?
问问题
1718 次
2 回答
3
通过Process对象,您可以重定向标准输入和输出。
所以你会做类似以下的事情......
var proc = new Process();
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = "C:\\YourExeGoesHere.exe";
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardInput = true;
proc.Start();
var thisComesFromTheProcess = proc.StandardOutput.ReadLine();
proc.StandardInput.WriteLine("this goes to the process");
您可能希望查看在写入输出数据时要通知的Process.OutputDataReceived事件,但这应该让您走上正确的轨道,并且还有其他 SO 帖子涵盖了 OutputDataReceived 事件。
于 2013-07-16T23:57:31.570 回答
1
我会让命令行应用程序启动一个 WPF 可执行文件。
让 WPF 打开套接字/web api 主机等以侦听其他命令。
当命令行需要用户输入时,让它运行一个批处理,向 WPF 应用程序提交一个请求,这与telnet session没有什么不同。您可以使此调用异步或相应地等待响应。
然后 WPF 可以打开通知,要求用户输入。用户输入一个参数,并将其提交回上面启动连接的命令行,允许您的批处理文件继续处理。
或者,如果您可以使用 Powershell,而不是标准命令行,这可能是有用的。你甚至可以像这样打开文件对话框。
这些是我能想到的你的选择,但是是的,这将是一个 PITA,祝你好运。
于 2013-07-17T00:25:25.240 回答