2011-01-08 58 views
1

我写了一些interop代码,利用user32.dll来枚举窗口并将它们添加到列表中。 WindowData是本地INotifyPropertyChanged的类存储窗口的hWnd,标题,位置,大小,可执行文件路径,应用程序图标等有没有什么办法可以“绑定”到所有打开的窗口的窗口数据?

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

任何人有任何想法?

回答

0

为了有效跟踪所有窗口的窗口数据而不进行轮询,您必须注册窗口创建或删除的通知,然后挂接所有消息队列并处理影响您尝试跟踪的窗口数据的消息。不幸的是,这是相当重要的任务。如果你想要开始,你可以看看Spy ++是如何实现的,以及类似的东西。这里有一个文章:

看后,你可能会被重新考虑的只是投票,每隔一段时间,小心地只更新ObservableCollection改变的数据。

相关问题