只是一個簡要的說明,這個問題已被重新編輯爲更加簡潔。在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