为这个人写一个好头衔很难。
我正在开发一个WPF应用程序,它需要知道系统上所有其他打开窗口的存在。我可以通过调用本机EnumWindows方法来做到这一点,我可以调用其他本机方法来过滤掉我感兴趣的窗口。这很有效。
我遇到的问题是我想知道窗口何时打开或关闭(理想情况下,最小化)。我可以通过使用EnumWindows进行轮询来做到这一点,但我发现它很慢,即使我把它推到另一个线程。
有没有更好的方法来获取窗口打开/关闭/最小化的通知?请记住,我对非托管代码的了解非常有限。
答案 0 :(得分:1)
你可以使用Windows钩子来做这类事情。
基本上一旦设置了钩子,只要你感兴趣的消息被调用,就会调用你的回调。
在codeproject上有一个很好的例子,可以用C#代码设置全局系统范围的挂钩 注意:此项目有一个非托管的c ++组件,但您不需要直接使用它。
答案 1 :(得分:1)
WM_WINDOWPOSCHANGING消息
http://msdn.microsoft.com/en-us/library/ms632653%28VS.85%29.aspx