有一种情况,我需要根据从命令提示符窗口收到的输出连续读取,写入和处理某些内容。例如,如果命令窗口正在查找输入,我需要向用户显示一个消息框。有办法吗?
答案 0 :(得分: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事件。
答案 1 :(得分:1)
我希望命令行应用程序启动WPF可执行文件。
让WPF打开一个socket / web api主机等来监听其他命令。
当命令行需要用户输入时,让它运行批处理,向WPF应用程序提交请求,与telnet session不同。您可以使此调用异步或等待相应的响应。
然后WPF可以打开通知,询问用户输入。用户输入一个参数,然后将其提交回上面启动连接的命令行,允许批处理文件继续处理。
或者,如果您可以使用Powershell而不是标准的CommandLine,this可能会有用。您甚至可以打开this等文件对话框。
这些是我能想到的选择,但是它会成为一个PITA,祝你好运。