【问题标题】:Opening console app using C# code in win forms在 winforms 中使用 C# 代码打开控制台应用程序
【发布时间】:2016-04-19 06:18:06
【问题描述】:

我正在尝试从我的 Windows 窗体应用程序中打开控制台应用程序。我使用了下面的代码。该代码正在打开控制台应用程序,但不显示任何内容(仅显示黑屏)。但我可以使用 StandardOutput 成功获得控制台输出。

Process proc = new Process();
proc.StartInfo.CreateNoWindow = false;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.FileName = @"C:\Program Filex86)\ConsoleTool.exe";

proc.Start();
StreamWriter sw = proc.StandardInput; 
sw.WriteLine("init");

txtOutput.Text += proc.StandardOutput.ReadToEnd().Replace("\n", "\r\n");

txtOutput.Text += proc.StandardError.ReadToEnd().Replace("\n", "\r\n");
proc.WaitForExit();

如何在使用代码打开的控制台窗口上获得显示?

【问题讨论】:

  • 请检查您的路径。它有一个)。这可能是您出现黑屏的原因!!!!!!1
  • 因为您正在重定向StandardOutput,因此它永远不会在控制台窗口中显示任何信息。您需要自己手动完成,请参阅 stackoverflow.com/q/8787123/479512stackoverflow.com/questions/2547428/…
  • @Mark 有没有办法在控制台上显示并在我的 win 表单应用程序中获取该数据?
  • 您已将控制台与所有输入和输出断开连接,我无法将信息重新输入其中,您需要按照 Han 在第二个链接中接受的答案中的建议进行操作.

标签: c#


【解决方案1】:

使用AllocConsole函数打开一个控制台窗口,然后正常使用Console.WriteLine或其他控制台函数!

示例:

[System.Runtime.InteropServices.DllImport("kernel32")]  
extern static void AllocConsole();  
//....  
AllocConsole();  
Console.WriteLine("hello world");  
Console.ReadKey();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多