Domanda

Ho il mio principale, dal mio principale mi sarà chiamare un altro modulo (terza parte) per eseguire una piccola operazione nella mia richiesta principale, quando chiamo che i processi module..it per un particolare momento dire 5 sec.while sua procedando che mostra il processo nella finestra commmand con un po 'il mio information..now principali attese di applicazione fino a quando la chiamata finisce il suo modulo di process.Now mia interrogazione is..how fare nascondo questa finestra di comando senza disturbare la sua process..I hanno cercato di utilizzare il CreateProcess ma sembra non funzionare ...

Ad esempio: la mia applicazione principale è il processo padre e il nome dell'applicazione è processo process..Parent bambino dovrebbe essere indipendente dal bambino process..check mio esempio seguente

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


}

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

Ora considerazione di quanto sopra, se si esegue il primo programma ... uscita apparirebbe nella stessa finestra dei comandi (Non dovrebbe essere così) ... voglio l'applicazione principale per creare il processo, ma non dovrebbe essere influenzata da processo figlio.

È stato utile?

Soluzione

Passo CREATE_NO_WINDOW nel parametro dwCreationFlags di CreateProcess.

Altri suggerimenti

Hai parlato di una "finestra di comando", quindi presumo che il bambino è un'applicazione console. In questo caso è possibile creare il processo in un Conole separata ed eventualmente forzare la nuova console da iconizzata o nascosto. Il seguente codice lanciare un processo figlio che interpreta un file batch (MyTest.bat). Spero che possa aiutare. Saluti.

#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;
}

Sembra che si desidera che l'uscita del processo figlio di presentarsi in una finestra separata. Se è così, si desidera chiamare CreateProcess e passarlo alla bandiera CREATE_NEW_CONSOLE, piuttosto che utilizzare exec*.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top