Hemos estado desarrollando varias aplicaciones de consola que hagan diversas funcionalidades (conectarse a un servidor sFtp, Ftp, Ftps, a WebServices, a Bases de Datos, etc) y el cliente quiere que dependiendo de un parámetro de configuración se pueda visualizar o no la consola para fines de monitoreo.
Para realizar la visualización u ocultar la pantalla de consola en una aplicación hay que realizar los siguientes pasos:
1.- Crear un nuevo proyecto “Aplicación de Consola”.
2.- Ir a la ventana de propiedades del proyecto que acabamos de crear.
3.- En la pestaña de aplicación, en la opción “Tipo de resultado” seleccionar “Aplicación para Windows” y cerrar la pantalla de propiedades.
4.- Agregar los métodos AllocConsole y FreeConsole a la clase principal como se muestra a continuación:
class Program { [DllImport("kernel32.dll")] static extern bool AllocConsole(); [DllImport("kernel32.dll")] public static extern Boolean FreeConsole(); static void Main(string[] args) { } } |
5.- En el método Main se puede permitir la visualización de la consola dependiendo de algún parámetro configurado en el archivo App.config
static void Main(string[] args) { if (Convert.ToBoolean(ConfigurationManager.AppSettings["activarVisualizacionEventosEnConsola"])) AllocConsole(); //[Tú código] if (Convert.ToBoolean(ConfigurationManager.AppSettings["activarVisualizacionEventosEnConsola"])) { Console.WriteLine("Presione enter para terminar el proceso"); Console.ReadLine(); FreeConsole(); } } |
Esperando que les sea útil esta información y recuerden que la compartir la información enriquecen a todos.