2014-03-06 3 views
2

관련없는 응용 프로그램 창이 닫힐 때를 알기 위해 리스너/감시자를 설정하는 방법이 있습니까?다른 hwnd가 닫힌 것을 알 수있는 방법이 있습니까?

창이 열려 있는지 확인할 수는 있지만 계속해서 어리석은 것처럼 보입니다.

+1

다른 앱이 본인의 앱이 아닌 경우 시스템 전체에 CBT 후크가 필요할 수 있습니다. – user1793036

+0

네가 맞다. 그건 내 용도가 아니야. 감사합니다. – Meep

답변

4

에 대한 액세스 가능성 API의 SetWinEventHook.

알림을 기반으로하므로 폴링이없고 CBT 후크와 달리 주입이 필요하지 않습니다.

+0

고마워, 이건 내가 찾던 간단한 대답이다. – Meep

4

할 수 있습니다 :

  1. 여론 조사 HWND 유효성을 가로 채기 위해
  2. 서브 클래스 창을 (당신이 타이밍 정밀도를 필요로하지 않는 경우 ESP.)의 WM_DESTROY 다음 응용 프로그램
  3. 을에 통지를 전달하기위한 그렇지 않으면 메시지를 가로 챌 수있는 창 메시지 훅을 설치하십시오.
  4. 부모 파괴로 파괴되도록 숨겨진 자식 창을 생성하고, 메시지 처리기를 정시에 호출해야합니다.
+0

외부 응용 프로그램이라고 말 했어야합니다. 닫을 때를 알아야하지만 편집 할 수는 없습니다. – Meep

+1

다른 핸들 유형과 마찬가지로'HWND'가 재사용됩니다. 'HWND'의 유효성을 검사하는 것은 검색 할 때 특정 'HWND'가있는 창이 아직 살아 있는지 여부에 대한 질문에 대답하지 않습니다. – IInspectable

+0

@IInspectable : 좋은 지적이며 사실 폴링은 신뢰할만한 해결책이 아닙니다. 'HWND' 가치 유효성을 확인하는 API가 여기에 있으며, 간단하고 간단합니다. 그리고 때로는 실수의 기회를 받아 들일 수 있고 단순함을 선호합니다. –