문제

기본 응용 프로그램이 있습니다. 기본 응용 프로그램에서 다른 모듈 (제 3 자)에 전화하여 메인 애플리케이션에서 작은 작업을 수행 할 예정입니다. 해당 모듈을 호출 할 때 특정 시간 동안 프로세스는 5 초라고합니다. 일부 정보가 포함 된 Commmand 창의 프로세스를 보여줍니다. 내 메인 응용 프로그램은 호출 모듈이 프로세스를 완료 할 때까지 기다립니다. CreateProcess이지만 작동하지 않는 것 같습니다 ...

예를 들면 : 내 주요 응용 프로그램은 부모 프로세스이고 호출 된 응용 프로그램은 자식 프로세스입니다. 부모 프로세스는 아동 프로세스와 무관해야합니다. 아래의 예를 확인하십시오.

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


}

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

이제 첫 번째 프로그램을 실행하면 위의 내용을 고려하십시오 ... 출력은 동일한 명령 창에 나타납니다 (그렇지 않아야합니다). 기본 응용 프로그램이 프로세스를 생성하기를 원하지만 아동 프로세스의 영향을받지 않아야합니다.

도움이 되었습니까?

해결책

통과하다 CREATE_NO_WINDOW 에서 dwCreationFlags 매개 변수 CreateProcess.

다른 팁

당신은 "명령 창"에 대해 이야기 했으므로 아이가 콘솔 응용 프로그램이라고 가정합니다. 이 경우 별도의 코놀로에서 프로세스를 생성하고 선택적으로 새 콘솔을 아이콘하거나 숨겨 지도록 강제 할 수 있습니다. 다음 코드는 배치 파일 (mytest.bat)을 해석하는 하위 프로세스를 시작합니다. 도움이되기를 바랍니다. 문안 인사.

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

아동 프로세스의 출력이 별도의 창에 나타나기를 원하는 것처럼 들립니다. 그렇다면 전화하고 싶습니다 CreateProcess 그리고 그것을 전달합니다 CREATE_NEW_CONSOLE 사용하기보다는 깃발 exec*.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top