¿Hay alguna forma de ocultar la ventana de la consola al ejecutar una aplicación de consola?
Actualmente estoy usando una aplicación Windows Forms para iniciar un proceso de consola, pero no quiero que se muestre la ventana de la consola mientras se ejecuta la tarea.
c#
console-application
Aaron Thomas
fuente
fuente
Respuestas:
Si está utilizando la
ProcessStartInfo
clase, puede configurar el estilo de ventana como oculto; en el caso de las aplicaciones de consola (no GUI), debe configurar CreateNoWindow paratrue
:fuente
Si escribió la aplicación de consola, puede ocultarla de forma predeterminada.
Cree una nueva aplicación de consola y luego cambie el tipo de "Tipo de salida" a "Aplicación de Windows" (hecho en las propiedades del proyecto)
fuente
Si está utilizando Process Class, puede escribir
antes
yourprocess.start();
y el proceso estará ocultofuente
La respuesta simple es: Vaya a las propiedades de la aplicación de su consola (propiedades del proyecto). En la pestaña "Aplicación", simplemente cambie el "Tipo de salida" a "Aplicación de Windows". Eso es todo.
fuente
Puede usar la API de FreeConsole para separar la consola del proceso:
(por supuesto, esto solo es aplicable si tiene acceso al código fuente de la aplicación de consola)
fuente
FreeConsole
hace lo que dice su nombre, no impide que Windows muestre la consola antes de que se llame.[DllImport("kernel32.dll")] static extern bool AllocConsole();
permite ejecutar fácilmente con una consola desde una aplicación Win32 estándarSi está interesado en la salida, puede usar esta función:
Ejecuta el programa de línea de comando dado, espera a que termine y devuelve el resultado como una cadena.
fuente
Si está creando un programa que no requiere la intervención del usuario, siempre puede crearlo como un servicio. Un servicio no mostrará ningún tipo de interfaz de usuario.
fuente
Agregue esto a su clase para importar el archivo DLL:
Y luego, si quieres ocultarlo, usa este comando:
Y si quieres mostrar la consola:
fuente
Sé que no estoy respondiendo exactamente lo que quieres, pero me pregunto si estás haciendo la pregunta correcta.
¿Por qué no usas tampoco:
Esas suenan como mejores opciones si todo lo que quieres es ejecutar un proceso.
fuente
Aunque, como otras respuestas aquí han dicho, puede cambiar el "Tipo de salida" a "Aplicación de Windows", tenga en cuenta que esto significa que no puede usarlo,
Console.In
ya que se convertirá en un NullStreamReader.Console.Out
yConsole.Error
parece que todavía funcionan bien sin embargo.fuente
Console.In
cuando no hay una consola para ingresar algo? ¿De dónde debe venir algo de lo que se puede accederConsole.In
? Esto no tiene ningún sentido en absoluto. En otras palabras: es totalmente obvio y lógico queConsole.In
sea unNullStreamReader
en este caso.Basado en la respuesta de Adam Markowitz anterior, lo siguiente funcionó para mí:
fuente
Tengo una solución general para compartir:
Simplemente incluya esta clase en su proyecto y llame
Magician.DisappearConsole();
.Una consola parpadeará cuando inicies el programa haciendo clic en ella. Cuando se ejecuta desde el símbolo del sistema, el símbolo del sistema desaparece poco después de la ejecución.
Hago esto para un Discord Bot que se ejecuta para siempre en el fondo de mi computadora como un proceso invisible. Fue más fácil que hacer que TopShelf funcione para mí. Un par de tutoriales de TopShelf me fallaron antes de escribir esto con ayuda del código que encontré en otro lugar. ;PAGS
También intenté simplemente cambiar la configuración en Visual Studio> Proyecto> Propiedades> Aplicación para iniciar como una aplicación de Windows en lugar de una aplicación de consola, y algo sobre mi proyecto evitó que esto ocultara mi consola, tal vez porque DSharpPlus exige iniciar una consola al inicio . No lo sé. Cualquiera sea la razón, esta clase me permite matar fácilmente la consola después de que aparezca.
Espero que este mago ayude a alguien. ;)
fuente
Solo escribe
fuente