2013-07-16 42 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,祝你好運。

相關問題