コマンドプロンプトウィンドウから受け取った出力に従って、いくつかのことを継続的に読み取り、書き込み、処理する必要がある状況があります。たとえば、コマンド ウィンドウが入力を探している場合、ユーザーにメッセージ ボックスを表示する必要があります。それを行う方法はありますか?
2 に答える
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 投稿があります。
コマンド ライン アプリケーションで WPF 実行可能ファイルを起動します。
WPF でソケット/Web API ホストなどを開いて、追加のコマンドをリッスンします。
コマンド ラインでユーザーからの入力が必要な場合は、コマンド ラインでバッチを実行します。これにより、 Telnet セッションとは異なり、WPF アプリケーションに要求が送信されます。この呼び出しを非同期にするか、それに応じて応答を待つことができます。
その後、WPF は通知を開き、ユーザー入力を求めることができます。ユーザーは引数を入力し、それを上記のコマンド ラインに送信して接続を開始し、バッチ ファイルが処理を続行できるようにします。
または、標準の CommandLine の代わりに Powershell を使用できる場合は、これが役立つ可能性があります。このようにファイル ダイアログを開くこともできます。
これらは私が考えることができるあなたのオプションですが、ええ、それはPITAになるので、頑張ってください.