2013-07-16 40 views
1

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

+3

消息框不是允许用户输入输入的好方法。没有超出是/否/取消。这个问题有一个共同的问题,它根本不解释为什么这是必要的。所以猜测你真正需要的是不可能的。 –

+0

你应该看看PowerShell,它有一个完整的API –

+0

@JohnSaunders,这取决于OP试图实现什么,以及为什么... –

回答

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事件时输出数据被写入通知,但这应该让你在正确的轨道上,有是涵盖OutputDataReceived事件的其他SO帖子。

1

我会让命令行应用程序启动一个WPF可执行文件。

让WPF打开socket/web api主机等来监听其他命令。

当命令行需要用户输入时,让它运行一个批处理,它将一个请求提交给WPF应用程序,与telnet session没有什么不同。您可以使此调用异步或等待响应。

WPF可以打开通知,询问用户输入。用户输入参数并将其提交回到启动连接的上面的命令行,从而允许批处理文件继续处理。

或者,如果您可以使用Powershell,而不是标准CommandLine,则可能会使用this。你甚至可以打开文件对话框如this

这些是你的选择,我能想到的,但是是的,它会成为一个PITA,祝你好运。

相关问题