2014-03-06 101 views
2

是否有一種方法可以設置監聽器/監視器來了解何時關閉不相關的應用程序窗口?有沒有辦法知道另一個hwnd何時關閉?

我可以檢查窗口是否仍然打開,但這似乎是愚蠢的不斷做。

+1

如果其他應用程序不是您的,您可能需要一個系統範圍的CBT掛鉤。 – user1793036

+0

是的,你是正確的,這不是我的應用程序。謝謝 – Meep

回答

4

可訪問性API的SetWinEventHook篩選爲EVENT_OBJECT_DESTROY

這是基於通知,所以沒有輪詢和不像CBT掛鉤不需要注入。

+0

謝謝,這是我正在尋找的簡單答案。 – Meep

4

您可以:

  1. 民調HWND有效性(尤其如果你並不需要定時精度。)
  2. 子窗口攔截其WM_DESTROY,然後將通知轉發給您的應用程序
  3. 安裝一個窗口消息鉤子,以便能夠攔截該消息,否則
  4. 創建一個隱藏的子窗口,讓它與父銷燬一起銷燬,也讓你的消息處理程序按時爲你調用
+0

我應該說這是一個外部應用程序,我只需要知道它何時關閉,但我不能編輯它。 – Meep

+1

像其他任何類型的句柄一樣,'HWND'被重用。檢查'HWND'的有效性並不能回答在檢索時具有特定'HWND'的窗口是否仍然存在的問題。 – IInspectable

+0

@IInspectable:這是一個很好的觀點,事實上投票並不是一個可靠的解決方案。還有API來檢查'HWND'值的有效性在這裏,它很簡單直接,然後有時候可以接受錯誤的機會並且更喜歡簡單性。 –

相關問題