2009-07-20 3 views
0

다른 응용 프로그램을 시작하고 com을 통해 통신하는 C++ 콘솔 응용 프로그램이 있습니다. 나는 스폰 된 창 hWnd 있고 COM 응용 프로그램이 더 이상 열려 있으면 콘솔 응용 프로그램 자체를 죽이기 싶습니다. 어떻게이 일을 할 수 있습니까?hWnd가 존재하지 않으면 자체 종료

답변

3

이미 응용 프로그램간에 통신 중이므로 신호를 설정해야합니다. 창이 닫히면 '죽었습니다'라는 메시지가 콘솔 응용 프로그램으로 전송됩니다. 그런 다음 콘솔 앱을 적절히 닫을 수 있습니다.

hWnd를 검사하여이를 수행하려면 hWnd가 더 이상 유효하지 않은지를 알려주는 'IsWindow()'함수를 사용하면됩니다. 폴링 구성을 통해이 작업을 수행해야합니다.

또 다른 옵션은 다른 응용 프로그램이 사용자의 것이 아닌 경우 후크를 설치하고 창을 지우는 것을 감시하는 것입니다. 이 작업을 수행하려면 Windows 후크를 살펴보고 CBT 후크가 적절할 것입니다. 손상되는 창을 쉽게 볼 수 있습니다.

+1

죄송합니다. 이것은 발생하기를 기다리고있는 경쟁 조건입니다. HWND는 간단한 번호이며 재사용됩니다. 그것이 투표 사이에 발생하면, 당신은 잃게됩니다. – MSalters

0

GetWindowThreadProcessId()를 호출 한 다음 OpenProcess()를 호출하십시오. 이제 프로세스 핸들이 신호되는지 테스트 할 수 있습니다. 또는 Wait()가 발생하면 테스트 할 수 있습니다.

관련 문제