Busqué en Google información sobre cómo ocultar la propia ventana de la consola. Sorprendentemente, las únicas soluciones que pude encontrar fueron soluciones hacky que involucraron FindWindow()
encontrar la ventana de la consola por su título . Profundicé un poco más en la API de Windows y descubrí que hay una manera mucho mejor y más fácil, así que quería publicarla aquí para que otros la encuentren.
¿Cómo se oculta (y muestra) la ventana de la consola asociada con mi propia aplicación de consola C #?
c#
console
console-application
Timwi
fuente
fuente
csproj
archivo manualmente. Visual Studio no tiene GUI para hacer esto, pero respetará la configuración si edita elcsproj
archivo correctamente.using System.Runtime.InteropServices;
const int SW_SHOWMINIMIZED = 2;
y luegoShowWindow(handle, SW_SHOWMINIMIZED);
De esta manera, la consola comienza no oculta, solo minimizada.Simplemente vaya a Propiedades de la aplicación y cambie el Tipo de salida de Aplicación de consola a Aplicación de Windows .
fuente
¿Por qué necesita una aplicación de consola si desea ocultar la consola en sí? =)
Recomiendo configurar el tipo de salida del proyecto para la aplicación de Windows en lugar de la aplicación de consola. No le mostrará la ventana de la consola, pero ejecutará todas las acciones, como lo hace la aplicación Consola.
fuente
TopShelf
permite ejecutarConsoles
como un servicio y esto rompe esoPuede hacer lo contrario y establecer el tipo de salida de la aplicación en: Aplicación de Windows. Luego agregue este código al comienzo de la aplicación.
Este código mostrará la consola si
showConsole
estrue
fuente
Mira mi publicación aquí:
Mostrar consola en la aplicación de Windows
Puede crear una aplicación de Windows (con o sin la ventana) y mostrar la consola como desee. Con este método, la ventana de la consola nunca aparece a menos que la muestre explícitamente. Lo uso para aplicaciones de modo dual que quiero ejecutar en modo consola o modo GUI, dependiendo de cómo se abran.
fuente
"Solo para esconderse" puedes:
Cambie el tipo de salida de la Aplicación de consola a la Aplicación de Windows ,
Y en lugar de
Console.Readline/key
que pueda utilizarnew ManualResetEvent(false).WaitOne()
al final para mantener la aplicación en ejecución.fuente
Si no quiere depende del título de la ventana, use esto:
...
fuente
Si no tiene problemas para integrar una aplicación de lotes pequeños, existe un programa llamado Cmdow.exe que le permitirá ocultar las ventanas de la consola según el título de la consola.
Agregue el exe a la solución, establezca la acción de compilación en "Contenido", configure Copiar en el directorio de salida como más le convenga, y cmdow ocultará la ventana de la consola cuando se ejecute.
Para hacer que la consola sea visible nuevamente, simplemente cambie los Argumentos
fuente