Crear una aplicación sin ventana

¿Cómo progtwigrías una aplicación C / C ++ que podría ejecutarse sin abrir una ventana o consola?

Cuando escribe un progtwig WinMain, automáticamente obtiene la opción / SUBSYSTEM como ventanas en el comstackdor. (Suponiendo que use Visual Studio). Para cualquier otro comstackdor, una opción similar podría estar presente, pero el nombre de la bandera podría ser diferente.

Esto hace que el comstackdor cree una entrada en el formato de archivo ejecutable ( formato PE ) que marca el ejecutable como un ejecutable de Windows.

Una vez que esta información esté presente en el archivo ejecutable, el cargador del sistema que inicia el progtwig tratará su archivo binario como un ejecutable de Windows y no un progtwig de consola y, por lo tanto, no hará que las ventanas de la consola se abran automáticamente cuando se ejecute.

Pero un progtwig de Windows no necesita crear ninguna ventana si no es necesario, al igual que todos los progtwigs y servicios que ve ejecutándose en la barra de tareas, pero no ve las ventanas correspondientes para ellos. Esto también puede suceder si crea una ventana, pero opta por no mostrarla.

Todo lo que necesitas hacer, para lograr todo esto es,

#include  int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int cmdShow) { /* do your stuff here. If you return from this function the program ends */ } 

La razón por la que necesita un WinMain es que una vez que marque el subsistema como Windows, el enlazador asume que su función de punto de entrada (que se llama después de que se carga el progtwig y se inicializa la biblioteca C Run TIme) será WinMain y no main. Si no proporciona un WinMain en dicho progtwig, obtendrá un error de símbolo no resuelto durante el proceso de vinculación.

En windows:

 #include  int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { // <-- Program logic here return 0; } 

Asegúrese de utilizar el interruptor de enlace / SUBSYSTEM como lo menciona Adam Mitz.

En otras plataformas:

 int main(int argc, char**argv) { // <-- Program logic here return 0; } 

Si necesita ejecutar contiguamente su progtwig sin tener una consola o ventana, puede encontrar deamon útil en * NIX o servicios en Windows , este ejemplo de .NET si necesita win32 simple solo google un poco para la muestra.
Desde su pregunta etiquetada como win32 supongo que los servicios son más relevantes para usted.

En Visual Studio Express 2010 después de configurar el subsistema en Windows (como lo sugiere el usuario17224), alternativamente cambiar el principal a WinMain (según lo sugerido por el usuario17224 y Brian R. Bondy), se puede establecer la función de entrada en main en propiedades, linker, avanzado, punto de entrada: simplemente escriba main en el cuadro de texto.

Use el asistente de Visual Studio para crear la aplicación Win32. Pero no cree la ventana, es decir, elimine la función de creación de ventana. Alternativamente, podemos crear la aplicación Win Service.

Si está utilizando MSVC o Visual Studio simplemente use el nuevo Asistente de proyectos y seleccione la Aplicación de consola .