Opprette en "usynlig" windows program i C / C ++

stemmer
2

Ok dette er en fortsettelse fra dette spørsmålet: Hvordan lage en enkel Hello World usynlig i Windows (C / C ++)

Folk ga meg litt veiledning og her er jeg med en ny qestion:

Aight etter å gjøre noen undersøkelser Jeg sitter igjen. Folk på internett hevder at ved å bare lage en win32 program blir det ingen grafiske indikasjoner.

Her er koden som gjør dette (jeg er ganske sikker på at du allerede vet dette, men w / e)

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow) {

//code
return 0;
}

Så koden tastet inn hoved ikke vises. Jeg vet egentlig ikke hva slags kode de betyr, men for eksempel:

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow) {

    while (1) {
    }
}

Dette programmet kommer et Cmd vindu helt fint.

Jeg har også funnet ut at ved å initialverdiene på STARTUPINFO struktur sånn

STARTUPINFO StartupInfo;
memset(&StartupInfo, 0, sizeof(StartupInfo));
// set the size of the structure
StartupInfo.cb = sizeof(STARTUPINFO);
// tell the application that we are setting the window display 
// information within this structure
StartupInfo.dwFlags = STARTF_USESHOWWINDOW;
// set the window display to HIDE
StartupInfo.wShowWindow = SW_HIDE;

ville skjule konsollen vinduet. Dette fungerer ikke heller for meg selv. Jeg har denne følelsen av at jeg mangler en viktig begrep her så jeg trenger dine kunnskaper gutta. Jeg ønsker å lage enkle .exe med noe som en stund loop eller en enkel print som ikke viser noen ting. Hva er det jeg mangler?

Publisert på 28/02/2012 klokken 22:44
kilden bruker
På andre språk...                            


1 svar

stemmer
5

Du må bruke en bestemt kompilatoren muligheten til å gjøre dette, det er ikke en egenskap ved selve koden. Jeg vil anta at du bruker Visual Studio til å kompilere.

Gå til Project Properties > Configuration Properties > Linker > System > SubSystemog sett den til Windows. Hvis du gjør dette, og kjøre programmet og for eksempel sette programmet i en uendelig loop, må du drepe det fra Oppgavebehandling.

Jeg har ingen anelse om hvordan du gjør dette på GCC. Gerald har fortalt meg i kommentarfeltet at bruk --subsystem,windowseller -mwindowsvil gjøre dette for GCC. Merk at -mwindowsknytter GDI bibliotekene også.

Svarte 28/02/2012 kl. 22:48
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more