2

Delphi で作成されたコンソール アプリケーション (Host.exe) があります。stdin readln を受け入れ、writeln によって stdout に応答します。ここで、C# が Host.exe に入力を与え、Host.exe から出力を取得する方法で、C# アプリケーションで Host.exe を使用したいと考えています。理想的には、以下のコードを記述しますが、機能しません。 outputReader.ReadLine();

System.IO.File.WriteAllText(tmp, vbs);

Process pProcess = new Process();

pProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal;

//strCommand is path and file name of command to run
pProcess.StartInfo.FileName = @"Host.exe";
pProcess.StartInfo.Arguments = "\"runa " + tmp +"\"";
// runs script file tmp in background
pProcess.StartInfo.CreateNoWindow = true;
pProcess.StartInfo.UseShellExecute = false;
pProcess.StartInfo.RedirectStandardOutput = true;
pProcess.StartInfo.RedirectStandardInput = true;
pProcess.StartInfo.RedirectStandardError = true;

pProcess.Start();

StreamWriter inputWriter = pProcess.StandardInput;
StreamReader outputReader = pProcess.StandardOutput;

while (true)
{
    inputWriter.WriteLine("getmsg");
    inputWriter.Flush();
    string s = outputReader.ReadLine(); // then do something with it

    inputWriter.WriteLine("progressglobal");
    inputWriter.Flush();

    string p = outputReader.ReadLine();
    if (p == "100")
    {
        break;
    }
    Application.DoEvents();
    Thread.Sleep(1000);
}
inputWriter.WriteLine("exit");
inputWriter.Flush();                    
pProcess.WaitForExit();

事前にご提案いただきありがとうございます。

4

1 に答える 1

0

この行を2回読みます。

string s = outputReader.ReadLine();

string p = outputReader.ReadLine();

変数が使用されていないため、最後の行だけが必要なようですs

于 2012-10-12T05:51:01.627 に答える