winapi: CreateProcess but hide the process' window? winapi: CreateProcess but hide the process' window? c c

winapi: CreateProcess but hide the process' window?


If its just a console app you can also use the CREATE_NO_WINDOW flag as part of the CreateProcess call itself, e.g.

CreateProcess(NULL, lpszCommandLine, NULL, NULL, FALSE,               CREATE_NO_WINDOW, NULL, NULL, &si, &pi);

Also, see this page for information about environment variables.


The following link here describes how to create the window silently:

DWORD RunSilent(char* strFunct, char* strstrParams){    STARTUPINFO StartupInfo;    PROCESS_INFORMATION ProcessInfo;    char Args[4096];    char *pEnvCMD = NULL;    char *pDefaultCMD = "CMD.EXE";    ULONG rc;    memset(&StartupInfo, 0, sizeof(StartupInfo));    StartupInfo.cb = sizeof(STARTUPINFO);    StartupInfo.dwFlags = STARTF_USESHOWWINDOW;    StartupInfo.wShowWindow = SW_HIDE;    Args[0] = 0;    pEnvCMD = getenv("COMSPEC");    if(pEnvCMD){        strcpy(Args, pEnvCMD);    }    else{        strcpy(Args, pDefaultCMD);    }    // "/c" option - Do the command then terminate the command window    strcat(Args, " /c ");     //the application you would like to run from the command window    strcat(Args, strFunct);      strcat(Args, " ");     //the parameters passed to the application being run from the command window.    strcat(Args, strstrParams);     if (!CreateProcess( NULL, Args, NULL, NULL, FALSE,        CREATE_NEW_CONSOLE,         NULL,         NULL,        &StartupInfo,        &ProcessInfo))    {        return GetLastError();          }    WaitForSingleObject(ProcessInfo.hProcess, INFINITE);    if(!GetExitCodeProcess(ProcessInfo.hProcess, &rc))        rc = 0;    CloseHandle(ProcessInfo.hThread);    CloseHandle(ProcessInfo.hProcess);    return rc;}

I think getenv and setenv are all okay? I am not sure what you are asking about in that respect.


set the STARTF_USESHOWWINDOW in dwFlags

by sharptooth