使用c#从win32应用程序中读取控制台应用程序的所有输出行
本文关键字:应用程序 输出 控制台 读取 win32 使用 | 更新日期: 2023-09-27 18:02:41
我有一个win32应用程序,我使用以下代码启动一个控制台应用程序:
public void ExecuteDecript(int element)
{
string toquen = TaskList[element].MakeToquen();
string cmdexePath = @"C:'Windows'System32'cmd.exe";
string myApplication = @"d:/SL3-xgold/tools/oclHashcat-lite-0.05/" + toquen;
string cmdArguments = String.Format("/K {0}", myApplication);
OCLProcess = new Process();
OCLProcess.StartInfo.FileName = cmdexePath;
OCLProcess.StartInfo.Arguments = cmdArguments;
OCLProcess.StartInfo.UseShellExecute = false;
OCLProcess.StartInfo.RedirectStandardOutput = true;
OCLProcess.OutputDataReceived += OutputHandler;
OCLProcess.Start();
OCLProcess.BeginOutputReadLine();
}
private static void OutputHandler(object sendingProcess, DataReceivedEventArgs outLine)
{
if (!String.IsNullOrEmpty(outLine.Data))
{
MessageBox.Show(outLine.Data);
}
}
问题是我读取了控制台应用程序的所有行,但只有在关闭控制台应用程序时才读取最后一行。有什么理论吗?
以上代码应该可以正常运行。然而,问题很可能出现在控制台应用程序上,也许在最后一次写Console.Write
而不是Console.WriteLine
时,它将不会被读取,直到应用程序终止并刷新该流。如果没有帮助,请发布一些代码为您的控制台应用程序进一步诊断问题。