有没有办法去"绑定"打开所有打开窗口的窗口数据?

时间:2011-01-08 22:23:55

标签: c# wpf interop user32

我编写了一些使用user32.dll来枚举窗口并将它们添加到List的互操作代码。 WindowData是一个本地INotifyPropertyChanged类,它存储窗口hWnd,标题,位置,大小,可执行路径,应用程序图标等。

有没有办法可以有效地“绑定”窗口标题,位置,大小等的变化?我不希望每秒都使用DispatcherTimer来更新信息。如果我可以使用简单的事件处理程序或回调或其他东西,我更喜欢它。

有人有什么想法吗?

1 个答案:

答案 0 :(得分:0)

要在不轮询的情况下有效地跟踪所有窗口的窗口数据,您必须注册窗口创建或删除的通知,然后挂钩所有消息队列并处理影响您尝试跟踪的窗口数据的消息。不幸的是,这是一项非常重要的任务。如果你想要先行一步,你可以看看Spy ++是如何实现的,以及类似的东西。这是一篇文章:

在查看之后,您可能会重新考虑只是经常轮询,并仔细更新ObservableCollection中的更改数据。