Uso il seguente codice per allocare una console per un'applicazione WinForm. La finestra della console appare correttamente e l'output è lì. Ma quando chiudo la finestra della console, la mia applicazione WinForm viene chiusa allo stesso tempo. Perché? Voglio mantenere la finestra WinForm.Assegnare una console per un'applicazione WinForm
private void btn_to_console_Click(object sender, EventArgs e)
{
if (NativeMethods.AllocConsole())
{
lbl_console_alloc_result.Text = "Console allocation successfully!";
IntPtr stdHandle = NativeMethods.GetStdHandle(NativeMethods.STD_OUTPUT_HANDLE);
Console.WriteLine("from WinForm to Console!");
lbl_console_alloc_result.Text = Console.ReadLine();
}
else
lbl_console_alloc_result.Text = "Console allocation failed!";
}
[System.Runtime.InteropServices.DllImportAttribute("kernel32.dll", EntryPoint = "GetStdHandle")]
public static extern System.IntPtr GetStdHandle(Int32 nStdHandle);
/// Return Type: BOOL->int
[System.Runtime.InteropServices.DllImportAttribute("kernel32.dll", EntryPoint = "AllocConsole")]
[return: System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)]
public static extern bool AllocConsole();
Grazie in anticipo ...
Controlla questo thread: http://stackoverflow.com/questions/533491/how-to-use-setconsolehandler-to-block-exit-calls –
grazie, nobugz. Aiuta. : D – smwikipedia