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イベントを確認することもできますが、これにより正しい軌道に乗ることができ、OutputDataReceived イベントをカバーする他の SO 投稿があります。

于 2013-07-16T23:57:31.570 に答える
1

コマンド ライン アプリケーションで WPF 実行可能ファイルを起動します。

WPF でソケット/Web API ホストなどを開いて、追加のコマンドをリッスンします。

コマンド ラインでユーザーからの入力が必要な場合は、コマンド ラインでバッチを実行します。これにより、 Telnet セッションとは異なり、WPF アプリケーションに要求が送信されます。この呼び出しを非同期にするか、それに応じて応答を待つことができます。

その後、WPF は通知を開き、ユーザー入力を求めることができます。ユーザーは引数を入力し、それを上記のコマンド ラインに送信して接続を開始し、バッチ ファイルが処理を続行できるようにします。

または、標準の CommandLine の代わりに Powershell を使用できる場合は、これが役立つ可能性があります。このようにファイル ダイアログを開くこともできます。

これらは私が考えることができるあなたのオプションですが、ええ、それはPITAになるので、頑張ってください.

于 2013-07-17T00:25:25.240 に答える