只是一个简要的说明,这个问题已被重新编辑为更加简洁。在Winforms项目上没有控制台输出,在控制台项目上工作
我正在使用.NET(无论是在C#或VB中,无所谓)。我有一个控制台应用程序,一些基本的东西:
using System;
namespace ConsolePrinter
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Output");
Console.ReadLine();
}
}
}
在我的WinForms应用程序,我需要重定向标准错误和标准输入,而不是标准输出。标准输出应该继续显示在控制台窗口中。通过制作一个简单的Winforms项目并将上述控制台EXE作为一个Process对象启动,我仍然可以在召唤的控制台中查看控制台的输出。只要我重定向标准错误,输出就会从控制台窗口中消失,并且所有显示的内容都是空白控制台。
下面是一个例子WinForms项目:
using System;
using System.Windows.Forms;
using System.Diagnostics;
namespace winformstest2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Process proc = new Process();
proc.StartInfo.FileName = "ConsolePrinter.exe";
//proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();
}
}
}
此代码按预期工作。取消注释该评论行提供了我正在谈论的错误。
我已经尝试过将表单附加到控制台项目,但不幸的是我需要频繁地显示和隐藏控制台,所以启动控制台应用程序作为一个过程是理想的。使用Win32 API也是一种想法,但用户不应该通过关闭控制台来关闭整个应用程序,该控制台会将AllocConsole()和其他Win32 API调用作为其使用的双重产品引起。
任何帮助表示赞赏,谢谢!
目前还不清楚发生了什么 - 当您启动命令行应用程序时,是否会启动*与控制台窗口*?这肯定会有帮助,有一个[mcve](控制台应用程序和一个小型的WinForms应用程序 - 它只需要一个带按钮的窗口来启动控制台应用程序...) –
这是http:// stackoverflow .COM /问题/ 4362111 /怎么办 - 我秀 - 一个控制台输出窗口-IN-A-形式的应用程序。虽然你必须将代码转换为vb.net – FloatingKiwi
@JonSkeet这是一个输出到stdout的C++程序,没什么特别的。在控制台项目中,它直接输出到.net控制台窗口,Winforms会打开控制台但不输出任何内容。 – KingDan