是否有与Windows命令提示符交互的API?

时间:2013-07-16 23:56:23

标签: c#

有一种情况,我需要根据从命令提示符窗口收到的输出连续读取,写入和处理某些内容。例如,如果命令窗口正在查找输入,我需要向用户显示一个消息框。有办法吗?

2 个答案:

答案 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,祝你好运。