2010-02-27 19 views
6

Utilizo el siguiente código para asignar una consola para una aplicación WinForm. La ventana de la consola se muestra con éxito y la salida está allí. Pero cuando cierro la ventana de la Consola, mi aplicación WinForm se cierra al mismo tiempo. ¿Por qué? Quiero mantener la ventana de WinForm.Asignar una consola para una aplicación 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(); 

Gracias de antemano ...

+0

Compruebe este hilo: http://stackoverflow.com/questions/533491/how-to-use-setconsolehandler-to-block-exit-calls –

+0

gracias, nobugz. Ayuda. : D – smwikipedia

Respuesta

6

El cierre de una ventana de la consola se apagará cualquier aplicación -ya sea una aplicación de consola, Windows Forms, aplicación nativa de Windows, o aplicación de WPF. Esta es una "característica" de las ventanas de la Consola.

Si no desea este comportamiento, debería, en cambio, crear una ventana personalizada para mostrar su salida en lugar de usar una ventana de consola. De lo contrario, debe llamar al FreeConsole en lugar de cerrar la ventana para separar su aplicación de la ventana de la consola.

+0

Gracias, Reed, gracias. Parece que necesito obtener un diccionario sobre Win32 API.:D – smwikipedia

Cuestiones relacionadas