2014-03-06 34 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'值的有效性在这里,它很简单直接,然后有时候可以接受错误的机会并且更喜欢简单性。 –

相关问题