【发布时间】:2008-11-11 12:57:29
【问题描述】:
我正在为 Windows 编写一种屏幕录制应用程序,并希望知道屏幕/活动窗口的哪些区域何时以及哪些区域发生了变化。
是否有我可以挂钩的 Windows API 以获取屏幕更改通知?
或者我需要手动编写this 之类的东西吗? :(
我一直认为远程桌面使用某种 API 来检测屏幕的哪些区域发生了变化,并且只发回那些图像 - 这正是我需要的行为。
【问题讨论】:
标签: windows winapi image-capture
我正在为 Windows 编写一种屏幕录制应用程序,并希望知道屏幕/活动窗口的哪些区域何时以及哪些区域发生了变化。
是否有我可以挂钩的 Windows API 以获取屏幕更改通知?
或者我需要手动编写this 之类的东西吗? :(
我一直认为远程桌面使用某种 API 来检测屏幕的哪些区域发生了变化,并且只发回那些图像 - 这正是我需要的行为。
【问题讨论】:
标签: windows winapi image-capture
我认为 Windows 中没有 API 可以告诉您屏幕的哪些部分发生了变化。
一种可能的方法是使用video mirror driver,就像 UltraVNC 使用的那样。
【讨论】:
您似乎需要做一些工作来检测屏幕变化。例如,此帖子位于tech-archive.net。有了这个,您可以将一个参考屏幕复制到 RAM,然后再取另一个并比较两者。由你来定义什么样的改变是有意义的。与desktop capture上的这篇文章类似。
【讨论】:
我认为远程桌面像命令一样流式传输 GDI。我不知道他们最初是如何捕获它们的。
【讨论】:
感谢大家的帮助。我最终编写了一个图像差分类,它似乎以惊人的速度计算出改变的矩形。我已经发布了它的工作原理here。
目前我只是在计时器中执行此操作,但也计划在输入事件后执行此操作。
非常感谢您提供的链接 Boost - 我刚刚又看了一遍这个帖子,所以我会尽快查看。
【讨论】: