Pregunta

Tengo mi solicitud principal, desde mi principal aplicación te llamaré otra módulo (tercera parte) para realizar una pequeña operación en mi aplicación principal, cuando llamo a que los procesos de module..it para un momento determinado decir 5 sec.while su del procesamiento de muestra el proceso en la ventana commmand con un poco de mi information..now principales aplicación espera hasta que el módulo se llama termina su process.Now mi pregunta is..how a hacer yo ocultar esta ventana de comandos sin perturbar su process..I trataron de utilizar el CreateProcess pero parece que no funciona ...

Por ejemplo: mi principal aplicación es el proceso dominante y el llamado proceso de aplicación es process..Parent niño debe ser independiente del niño process..check mi ejemplo a continuación

int main()
{
  execl("c:\\users\\rakesh\\Desktop\\calledapplication.exe","c:\\users\\rakesh\\Desktop    \\calledapplication.exe",0);


}

code in calledapplication
int main
{
  printf("Rakesh");
}

Ahora teniendo en cuenta lo anterior, si se ejecuta el primer programa de salida ... aparecería en el mismo ventana de comandos (no debería ser así) ... Quiero que la aplicación principal para crear el proceso, pero no debe ser afectada por el proceso hijo.

¿Fue útil?

Solución

CREATE_NO_WINDOW Pass en el parámetro dwCreationFlags de CreateProcess.

Otros consejos

Usted ha hablado de una "ventana de comandos", así que supongo que el niño es una aplicación de consola. En ese caso se puede crear el proceso en un Conole independiente y opcionalmente forzar la nueva consola para ser minimizado u oculto. El siguiente código lanzar un proceso hijo que interpreta un archivo por lotes (MyTest.bat). Espero que pueda ayudar. Saludos.

#include <windows.h>
#include <stdio.h>

int main(int argc, char **argv)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
BOOL rv = FALSE;
WCHAR cmdline[] = TEXT("cmd.exe /c mytest.bat");

    memset(&si,0,sizeof(si));
    si.cb = sizeof(si);
// Add this if you want to hide or minimize the console
    si.dwFlags = STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_HIDE; //or SW_MINIMIZE
///////////////////////////////////////////////////////
    memset(&pi,0,sizeof(pi));
    rv = CreateProcess(NULL, cmdline, NULL, NULL,
                           FALSE, CREATE_NEW_CONSOLE,
                           NULL, NULL, &si, &pi);
    if (rv) {
        WaitForSingleObject(pi.hProcess, INFINITE);
                printf("Done! :)\n");
    }
        else {
                printf("Failed :(\n");

    }

        return rv ? 0 : 1;
}

Parece que usted quiere la salida del proceso hijo aparezca en una ventana separada. Si es así, que desea llamar CreateProcess y pasarlo CREATE_NEW_CONSOLE la bandera, en lugar de utilizar exec*.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top