2011-11-30 26 views
5

Estoy creando un programa C++ con Visual Studio 2010 que se supone que se ejecuta en el fondo de mi máquina.Iniciando un programa C++ oculto

Por lo tanto, cuando lo enciendo, no debería ver la pantalla de CMD mientras se está ejecutando. ¿Cómo puedo hacer esto? ¿Tengo que usar la API Win32 o bastará con un programa C++ normal?

Tenga en cuenta que mi programa no tiene ninguna GUI en absoluto.

+0

Lo pregunté antes de http://stackoverflow.com/questions/3875995/system-to-c-without-calling-cmd-exe – aliva

+0

Probablemente requiere alguna API específica de Windows - No tengo idea de cuál (solo con Linux y sabiendo Posix, pero no Win32). –

Respuesta

13

Uso WinMain():

#include <windows.h> 

int WINAPI WinMain(HINSTANCE inst,HINSTANCE prev,LPSTR cmd,int show) 
{ 
    // program starts here 
    return 0; 
} 

// int main() <-- remove main() 

Entonces Aseguro que la configuración del proyecto se establecen de manera que se genera un programa de "Win32" y no una "consola "programa.

enter image description here

Editar: Como @Sehe señala, WinMain puede no ser necesario, aunque no estoy muy seguro de dónde se encuentra esta opción.

+1

El uso de WinMain no tiene nada que ver con eso. Simplemente cambie la opción del subsistema a Win32 y listo. – sehe

+1

@sehe: si lo hace en Visual Studio, el punto de entrada predeterminado se cambia a WinMain. – MSalters

+0

@sehe Su * sugerencia * es incorrecta. Esto se resolverá en: error LNK2019: símbolo externo sin resolver _WinMain @ 16 al que se hace referencia en la función ___tmainCRTStartup – FailedDev

2

Muy a menudo un programa que se ejecuta en Windows sin una "cara" (por ejemplo, sin interfaz de usuario en absoluto) se implementa como Service.

1

Simplemente haga que sea una aplicación GUI en lugar de una aplicación de línea de comando. Haga clic derecho en el proyecto -> Propiedades -> Propiedades de configuración -> Enlazador -> Sistema -> SubSistema -> Windows (/ SUBSISTEMA: WINDOWS).

0

Puede ejecutar como un proceso de Windows (que no se conecta a una consola), pero nunca crea una ventana. la principal diferencia es la firma de WinMain, y las banderas para el compilador.

Vaya a Archivo -> Nuevo proyecto, seleccione la aplicación estándar de Windows y luego elimine todo excepto WinMain.