0

有一种情况,我需要根据从命令提示符窗口接收到的输出不断地读取、写入和处理一些东西。例如,如果命令窗口正在寻找输入,我需要向用户显示一个消息框。有没有办法做到这一点?

4

2 回答 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 回答