2017-11-27 20 views
0

은 내가 사용하는 2017전환 자식 프로세스 창 가시성 ++ 아이를 다시 실행하지 않고

비주얼 스튜디오를 사용

siStartInfo.dwFlags & = STARTF_USESHOWWINDOW;

siStartInfo.wShowWindow = SW_HIDE;

숨겨진 창을 사용하여 하위 프로세스 (CreateProcess()를 통해)를 만들 수 있습니다. 그것은 완벽하게 작동합니다.

가능하면 가능하면 필요시 기본 프로그램에서 자식 프로세스의 창 (제작 후 표시) 상태를 전환 할 수 있어야합니다 (버튼을 누를 때마다, 예를 들어). CreateProcess()를 통해 다시 실행하지 않고 자식 프로세스의 윈도우 가시성을 제어하려고합니다.

하위 프로세스 코드를 수정하는 것은 옵션이 아닙니다. 소스 코드가 반드시 필요한 것은 아니지만 다양한 프로그램이 될 수 있습니다.

미리 감사드립니다.

+0

'siStartInfo.dwFlags | = STARTF_USESHOWWINDOW;'이 모든 것에 관련된'visual-studio'가 얼마나 불분명한지 사용해야합니다. – RbMm

+0

그리고 자식 프로세스는 시작 정보를 전혀 무시할 수 있습니다. – RbMm

+1

하위 프로세스 창을 찾아 보여야합니다. –

답변

0

하위 프로세스의 고유 한 창 클래스 또는 제목을 알고있는 경우 FindWindow()을 사용하여 해당 창을 찾을 수 있습니다.

더 일반적인 방법으로 모든 최상위 창을 열거하려면 EnumWindows()을 사용하십시오. 각 창에 대해 자식 프로세스에 속하는지 확인하려면 GetWindowThreadProcessId()을 호출하십시오.

가시성을 전환하려면 ShowWindow()으로 전화하십시오.

+1

스폰 된 응용 프로그램이 단일 스레드이거나 (적어도 해당 창이 주 스레드에 속한 경우) ['EnumThreadWindows()'] (https://msdn.microsoft.com/en-us/library)를 사용하는 것이 좋습니다. /windows/desktop/ms633495.aspx) 대신'EnumWindows()'+'GetWindowThreadProcessId()'를 사용하십시오. 'CreateProcess()'는 새로운 프로세스의 메인 쓰레드의 쓰레드 ID를 반환한다. –