如何从本机应用程序获取窗口打开/关闭/最小化的消息?

时间:2010-03-31 19:05:46

标签: .net windows winapi pinvoke

为这个人写一个好头衔很难。

我正在开发一个WPF应用程序,它需要知道系统上所有其他打开窗口的存在。我可以通过调用本机EnumWindows方法来做到这一点,我可以调用其他本机方法来过滤掉我感兴趣的窗口。这很有效。

我遇到的问题是我想知道窗口何时打开或关闭(理想情况下,最小化)。我可以通过使用EnumWindows进行轮询来做到这一点,但我发现它很慢,即使我把它推到另一个线程。

有没有更好的方法来获取窗口打开/关闭/最小化的通知?请记住,我对非托管代码的了解非常有限。

2 个答案:

答案 0 :(得分:1)

你可以使用Windows钩子来做这类事情。

基本上一旦设置了钩子,只要你感兴趣的消息被调用,就会调用你的回调。

codeproject上有一个很好的例子,可以用C#代码设置全局系统范围的挂钩 注意:此项目有一个非托管的c ++组件,但您不需要直接使用它。

答案 1 :(得分:1)