3

私は次のProcessように開始してTexファイルを処理しています:

process p1 = new Process();
p1.StartInfo.FileName = "C:\\texlive\\2012\\bin\\win32\\pdflatex.exe";
p1.StartInfo.Arguments = FileName;
p1.consuleProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p1.consuleProcess.StartInfo.CreateNoWindow = true;
p1.consuleProcess.StartInfo.RedirectStandardOutput = true;
p1.consuleProcess.StartInfo.UseShellExecute = false;
p1.consuleProcess.StartInfo.RedirectStandardInput = true;
p1.Start();
p1.consuleProcess.BeginOutputReadLine();
p1.consuleProcess.OutputDataReceived += new DataReceivedEventHandler(p1_OutputDataReceived);

OutputDataReceivedイベントTextBoxを処理して、出力文字列をに表示します。

Texファイルにエラーがあった場合は、StandardInputに行を書き込む必要があります。プロセスが入力を待っているときに、私に伝えることができるイベントはないと思います。そこで、 OutputDataReceivedイベントをチェックして、次の条件がいつ発生するかを確認できると思いました。e.Data == "?" 本当です。ただし、問題は、e.Data == "?"でOutputDataReceived イベントを発生させる直前に、 StandardInputに入力が必要なことです。

では、プロセスが入力を待機していることを確認するにはどうすればよいですか?

ありがとう。

4

1 に答える 1