我编写了一些使用user32.dll来枚举窗口并将它们添加到List的互操作代码。 WindowData是一个本地INotifyPropertyChanged类,它存储窗口hWnd,标题,位置,大小,可执行路径,应用程序图标等。
有没有办法可以有效地“绑定”窗口标题,位置,大小等的变化?我不希望每秒都使用DispatcherTimer来更新信息。如果我可以使用简单的事件处理程序或回调或其他东西,我更喜欢它。
有人有什么想法吗?
答案 0 :(得分:0)
要在不轮询的情况下有效地跟踪所有窗口的窗口数据,您必须注册窗口创建或删除的通知,然后挂钩所有消息队列并处理影响您尝试跟踪的窗口数据的消息。不幸的是,这是一项非常重要的任务。如果你想要先行一步,你可以看看Spy ++是如何实现的,以及类似的东西。这是一篇文章:
在查看之后,您可能会重新考虑只是经常轮询,并仔细更新ObservableCollection
中的更改数据。