c++ - usar - Crear una aplicación sin ventana
interfaz grafica en dev c++ (6)
¿Cómo programarías una aplicación C / C ++ que podría ejecutarse sin abrir una ventana o consola?
Cuando escribe un programa WinMain, automáticamente obtiene la opción / SUBSYSTEM como ventanas en el compilador. (Suponiendo que use Visual Studio). Para cualquier otro compilador, una opción similar podría estar presente, pero el nombre de la bandera podría ser diferente.
Esto hace que el compilador 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 programa tratará su archivo binario como un ejecutable de Windows y no un programa de consola y, por lo tanto, no hará que las ventanas de la consola se abran automáticamente cuando se ejecute.
Pero un programa de Windows no necesita crear ninguna ventana si no es necesario, al igual que todos los programas 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 <Windows.h>
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 programa y se inicializa la biblioteca C Run TIme) será WinMain y no main. Si no proporciona un WinMain en dicho programa, obtendrá un error de símbolo no resuelto durante el proceso de vinculación.
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.
Si está utilizando MSVC o Visual Studio simplemente use el nuevo Asistente de proyectos y seleccione la Aplicación de consola .
Si necesita ejecutar contiguamente su programa 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.
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.
En windows:
#include <windows.h>
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;
}