2012-02-24 6 views
1

우리는 다양한 프로세스 COM 개체를 여러 가지 용도로 사용하는 응용 프로그램을 가지고 있습니다. 응용 프로그램이 실행되는 동안 사용자가 Windows를 종료하라는 메시지를 보내면 모든 응용 프로그램 (최상위 창)에 종료 알림이 보내지 만 OoP COM 개체는 부모에게 알리기 전에 종료 될 수 있으며 정상적으로 종료 될 수 있습니다. 다른 구성 요소에서 다양한 오류가 발생합니다.프로세스 외부 ActiveX EXE가있는 Windows 종료 처리

불안정한 타사 개체를 호스팅하기 위해 OoP 개체 중 하나가 만들어 졌기 때문에 충돌이 발생하면 자동으로 다시 시작되므로 Windows가 종료 될 때 다시 시작되지 않습니다.

부모 프로세스의 오류를 처리 할 수 ​​있지만 ActiveX 호스트가 Windows에 "나는 아직 종료되지 않았지만 만기가 될 것입니다."또는 더 나은 방법으로 Windows에 알릴 수있는 방법이 있습니까? 처음에는 알리지 않습니까?

부모 프로세스, OoP 개체 및 해당 호스트 모두 C++ 및 VB6이 혼합되어 있습니다.

+0

ActiveX EXE 코드를 소유하고 있습니까? – UnhandledExcepSean

+0

네, 하나는 ATL을 사용하는 C++이고 다른 하나는 VB6 프로젝트입니다 – Deanna

답변

3

몇 가지 방법이 있습니다. OOP 서버는 종료 요청을 무시할 수 있습니다. 클라이언트는 종료하고 모든 참조 횟수를 제거합니다. 마지막 객체가 해제 될 때 즉시 종료하는 것을 알 수 있도록 플래그를 설정하려고합니다. 서버는 일반적으로 잠시 동안 계속 실행됩니다.

OOP 서버에서 SetProcessShutdownParameters()을 호출 할 수 있습니다. GetProcessShutdownParameters()에서 가져온 레벨에서 1을 뺀 다음 클라이언트가 서버보다 항상 종료 알림을 받도록합니다. Windows 메시지를 얻기 위해 숨겨진 최상위 창을 가지고 있지 않은 OOP 서버에서도 작동합니다.

+0

흠, 흥미로운 것 같습니다. 우리는 최상위 창에 액세스 할 수 있다고 생각하지 않지만 둘 다 나중에 플레이 할 것입니다. 감사합니다 – Deanna

+0

우, 작동, 고마워요 :) – Deanna