Pergunta

Eu tenho meu aplicativo principal, do meu aplicativo principal eu vou estar chamando outra módulo (terceiros) para realizar uma pequena operação no meu aplicativo principal, quando eu chamo que os processos module..it para um determinado momento dizer 5 sec.while sua proccessing ele mostra o processo na janela de commmand com algum information..now minha principais aplicativo aguarda até que o chamado módulo termina seu process.Now minha pergunta is..how fazer Eu ocultar esta janela de comando, sem perturbar a sua process..I tentou usar o CreateProcess mas parece que não funciona ...

Por exemplo: meu aplicativo principal é o processo pai eo aplicativo chamado é um processo process..Parent criança deve ser independente da criança process..check meu exemplo a seguir

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


}

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

Agora, considerando o acima, se você executar o primeiro programa ... saída seria aparecem na mesma janela de comando (que não deve ser assim) ... Eu quero o aplicativo principal para criar o processo, mas não deve ser afetada por processo filho.

Foi útil?

Solução

Passe CREATE_NO_WINDOW no parâmetro dwCreationFlags de CreateProcess.

Outras dicas

Você falou sobre uma "janela de comando", então eu presumo que a criança é um aplicativo de console. Nesse caso, você pode criar o processo em um Conole separado e, opcionalmente, forçar o novo console a ser minimizada ou oculta. O seguinte processo filho o lançamento de um código que interpreta um arquivo de lote (MyTest.bat). Espero que possa ajudar. Cumprimentos.

#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 você quer a saída do processo filho para aparecer em uma janela separada. Se assim for, você quer chamar CreateProcess e passá-lo a bandeira CREATE_NEW_CONSOLE, ao invés de usar exec*.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top