私はexeを実行するためにProcessクラスを使用しています。私のプロセスは入力を待っていますか?
exeは私が制御しないサードパーティのコンソールアプリケーションです。
私はプロセスがコマンドラインでの入力を待っているかどうかを知りたいです。
何か違いがあれば、入力を待つ場合はアプリケーションを強制終了します。
プログラムからの出力を待っているときには適切なイベントがありますが、プロセスが辛抱強く入力を待っているときには何も似ていません。
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = "myapp.exe";
info.CreateNoWindow = true;
info.UseShellExecute = false;
info.RedirectStandardError = true;
info.RedirectStandardInput = true;
info.RedirectStandardOutput = true;
process.StartInfo = info;
process.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived);
process.ErrorDataReceived += new DataReceivedEventHandler(process_ErrorDataReceived);
process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();
process.WaitForExit();
プロセスが入力を待っていることを検出するにはどうすればよいですか?サードパーティのプロセスが何をしているかを正確にあなたがポーリングそのスレッドの状態を試みることができるによって
あなたの問題は私の興味を引くものです。私はGUIアプリケーション(私の質問参照)でモーダルループを検出するためのいくつかの癖を作りましたが、コンソールアプリケーションのために、今まで私は良い解決策を見つけられませんでした... – jdehaan