Cómo ejecutar una aplicación de consola .NET en segundo plano

Tengo una aplicación de consola escrita en C # que está progtwigda para ejecutarse cada 15 minutos aproximadamente usando el Progtwigdor de tareas de Windows incorporado.

Cada vez que se ejecuta, el cuadro de la consola negra aparece durante la ejecución y luego se cierra. No estoy escribiendo nada en la consola. ¿Hay alguna manera de hacer que esto se ejecute en segundo plano?

¡Fácil!

Parece difícil de creer, pero funciona como un encanto. Lo he usado para algunos proyectos de configuración, cuando desea realizar tareas personalizadas sin signos de ello.

  • Cree el proyecto como un proyecto de aplicación de Windows (esta es la parte difícil).
  • Nunca haga llamadas de ninguna forma. Solo sigue exactamente como en tu aplicación de consola

    class Program { static void Main(string[] args) { // Just don't call Application.Run(new frmMain(args)); // ... your code } } 

Esto se debe a que los proyectos de aplicaciones de Windows no son realmente diferentes de la consola, excepto por la primera forma y las referencias. Es una ejecución totalmente oculta. ¡Intentalo!

Proyecto> Propiedades> pestaña Aplicación> cambiar Tipo de salida a “Aplicación de Windows”.

No más ventana de consola.

¿Qué hay de implementar la aplicación en un servicio de Windows? Puede establecer el intervalo en 15 minutos y ejecutar la operación en timer_tick.

Puede usar la API de Windows para minimizar la consola. De lo contrario, puede convertirlo en un archivo EXE de Windows que en realidad no carga un formulario y llama a System.Windows.Forms.Application.Run() .

Código para minimizar la consola:

 [DllImport( "user32.dll" )] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); public const int SW_SHOWMINIMIZED = 2; IntPtr winHandle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle; ShowWindow(winHandle, SW_SHOWMINIMIZED); 

Si ya tiene una aplicación de consola de Windows creada, simplemente puede cambiar el tipo de salida de su aplicación a la aplicación de Windows.

Debajo de su proyecto: Vaya a Propiedades> Aplicación Seleccione “Aplicación de Windows” como el tipo de Salida.

Este sería el menor impacto y puede mantener su Progtwigdor de tareas de Windows ejecutando la misma tarea.

Si no escribe nada en la consola, puede convertirlo en un servicio. http://msdn.microsoft.com/en-us/library/9k985bc9%28VS.80%29.aspx

Solo se mostrará si está progtwigdo para ejecutarse como el mismo usuario que está actualmente conectado. Cree otro usuario en la máquina con una contraseña ridículamente larga, configúrelo como administrador (solo si es necesario) y programe la tarea para que se ejecute como tal usuario.

Sucio como cualquier cosa por ahí pero ( desde aquí ):

El proceso toma 3 archivos. launch.bat , invis.vbs y (tu progtwig). En launch.bat (este archivo ejecuta su progtwig de forma silenciosa), wscript.exe "C:\yourpath\invis.vbs" "your file.bat" . En invis.vbs , coloca

CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, False

Y finalmente en tu archivo, launch.bat , pon lo que quieras …

echo off erase c:\junk.txt . Bueno, ya terminaste. Simplemente abra launch.bat .

Aunque funciona como un encanto. Lanza el primer bate (launch.bat), que a su vez lanza su servicio / ejecutable en sigilo. Entonces, es un blip rápido para el lanzamiento original, luego se fue.

Esto es facil. Establezca la tarea para que se ejecute en una cuenta que no sea su cuenta de inicio de sesión.