Question

J'ai mon application principale, à partir de mon application principale, j'appellerai un autre module (tiers) pour effectuer une petite fonction Il montre le processus dans la fenêtre Commmand avec certaines informations ... maintenant que mon application principale attend jusqu'à ce que le module appelé termine son processus. Maintenant que ma question est ... comment je cache cette fenêtre de commande sans déranger son processus ... j'ai essayé d'utiliser La création mais cela ne semble pas fonctionner ...

Par exemple:mon application principale est le processus parent et l'application appelée est le processus enfant..Le processus parent doit être indépendant du processus enfant..vérifiez mon exemple ci-dessous

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


}

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

Maintenant, considérant ce qui précède si vous exécutez le premier programme ... la sortie apparaîtra dans la même fenêtre de commande (ce ne devrait pas être comme ça) ... Je veux que l'application principale crée le processus mais il ne devrait pas être affecté par le processus de l'enfant.

Était-ce utile?

La solution

Passer CREATE_NO_WINDOW dans le dwCreationFlags paramètre de CreateProcess.

Autres conseils

Vous avez parlé d'une « fenêtre de commande », donc je suppose que l'enfant est une application console. Dans ce cas, vous pouvez créer le processus dans un Conole séparé et éventuellement forcer la nouvelle console à iconifiée ou caché. Le code suivant lancer un processus enfant qui interprète un fichier batch (MyTest.bat). J'espère que cela peut vous aider. Cordialement.

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

On dirait que vous voulez la sortie du processus enfant apparaisse dans une fenêtre séparée. Si oui, vous voulez appeler CreateProcess et passer le drapeau CREATE_NEW_CONSOLE, plutôt que d'utiliser exec*.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top