これは、C# GUI プログラムでボタンをクリックしたときに呼び出されるメソッドです。これは非常に単純な C++ コンソール プログラムを起動し、終わりのないループで毎秒 1 行を出力するだけです。
private static Process process;
private void LaunchCommandLineApp()
{
process = new Process();
process.StartInfo.FileName = "SimpleTest.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.EnableRaisingEvents = true;
process.StartInfo.CreateNoWindow = false;
process.OutputDataReceived += process_OutputDataReceived;
process.Start();
process.BeginOutputReadLine();
}
これは、受信した出力データを処理する方法です。
private void process_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
if (e.Data != null)
Console.WriteLine(e.Data.ToString());
}
C# デバッグ出力に出力が表示されません... しかし、printf を std::cout に変更すると、リダイレクトされたメッセージが表示されます。
printf を使用してこれらのステートメントを表示する方法があるかどうか考えていますか?
参考:私のC ++コード[編集済みの作業バージョン]:
#include <stdio.h>
#include <Windows.h>
#include <iostream>
int main()
{
int i = 0;
for(;;)
{
Sleep(1000);
i++;
// this version of printf with fflush will work
printf("The current value of i is %d\n", i);
fflush(stdout);
// this version of cout will also work
//std::cout << "the current value of i is " << i << std::endl;
}
printf("Program exit\n");
}