Ocultar la ventana de la consola en la aplicación de consola C #

105

La cuestión es que realmente no quiero que aparezca la ventana de la consola ... pero la solución debería estar ejecutándose. Mi punto aquí es que quiero mantener la aplicación ejecutándose en segundo plano, sin que aparezca ninguna ventana.

Usuario SOF
fuente
2
¿Puede darnos un poco más de información sobre lo que debería hacer la aplicación? ¿Parece que debería ser un servicio o una aplicación de Windows? Con un poco de conocimiento sobre su propósito, podríamos ayudar mucho más y sugerir la mejor manera de resolver esto.
Dave
Su aplicación keylogger. Utilicé el servicio de Windows pero no puede obtener estados clave en el servicio de Windows
Usuario SOF

Respuestas:

188

Cambie el tipo de salida de Aplicación de consola a Aplicación de Windows . Esto se puede hacer en Proyecto -> Propiedades -> Aplicación en Visual Studio:

texto alternativo

Dirk Vollmar
fuente
4
La ventana de la consola parpadea y retrocede. ¿Cómo mantengo la aplicación ejecutándose sin ninguna ventana?
Usuario SOF
Usuario @SOF: ¿Cómo se inicia la aplicación? ¿Haciendo doble clic en el Explorador o desde el menú Inicio?
Dirk Vollmar
también he puesto Console.ReadLine ();
Usuario SOF
16
Quite el Console.ReadLine. No tiene ningún sentido si no tiene una ventana de consola.
Dirk Vollmar
1
@ KarolŻurowski: La idea aquí es que lo usarías para aplicaciones que también vienen con algún tipo de interfaz de usuario (por ejemplo, un icono en la bandeja del sistema) o aplicaciones que realizan una determinada tarea y luego salen automáticamente cuando terminan. Si no tiene ninguno, la aplicación se ejecutará en segundo plano hasta que cierre la sesión o se apague o hasta que se elimine explícitamente, por ejemplo, utilizando el Administrador de tareas.
Dirk Vollmar
26

Cambie su tipo de aplicación a una aplicación de Windows. Su código aún se ejecutará, pero no tendrá ventana de consola, ni ventana estándar de Windows a menos que cree una.

Sekhat
fuente
2
La ventana de la consola parpadea y retrocede. ¿Cómo mantengo la aplicación ejecutándose sin ninguna ventana?
Usuario SOF
Te aseguras de que no termine. Realmente no hay mucho más que decir sin más información. ¿Qué hace el programa? ¿Ejecuta algo en un bucle?
Lasse V. Karlsen
1
Cambiar el "Tipo de salida" de la aplicación a "Aplicación de Windows" funcionó para mí.
hellowahab
12

En lugar de Console.Readline/keyque pueda utilizar new ManualResetEvent(false).WaitOne()por fin. Esto funciona bien para mi.

Khaja Kamal
fuente
3

Tal vez quieras intentar crear una aplicación de servicio de Windows . Se ejecutará en segundo plano, sin ninguna interfaz de usuario.

bla
fuente
3
El servicio de Windows no puede obtener eventos de tecla presionada
Usuario SOF
1
Los servicios están severamente limitados dependiendo de su aplicación, a partir de Windows Vista están forzados a la Sesión 0 y, por lo tanto, no pueden realizar nada en otras sesiones, como mostrar mensajes emergentes.
Matt
1
@Matt "no puede realizar nada en otras sesiones" no es del todo cierto. Aquí hay un proyecto de código para un Servicio que abre un símbolo del sistema de administrador en el escritorio del usuario que inició sesión. codeproject.com/Articles/35773/…
Qodex
0

Cambie el tipo de salida de Aplicación de consola a Aplicación de Windows ,

Y en su lugar Console.Readline/key, puede usar new ManualResetEvent(false).WaitOne()al final para mantener la aplicación en funcionamiento.

Nuevo Testamento
fuente