6

我正在为 Windows 编写一种屏幕录制应用程序,并希望知道屏幕/活动窗口的何时以及哪些区域发生了变化。

是否有我可以挂钩的 Windows API 以获取屏幕更改的通知?

还是我需要手动编写这样的东西?:(

我一直认为远程桌面使用某种 API 来检测屏幕的哪些区域发生了变化,并且只发回那些图像——这正是我需要的行为。

4

5 回答 5

4

我认为 Windows 中没有 API 可以告诉您屏幕的哪些部分发生了变化。

一种可能的方法是使用UltraVNC 之类的视频镜像驱动程序。

于 2008-11-14T14:03:07.407 回答
4

我想你会在这里找到一些线索Screen Event Recorder DLL/Application,在这里About Hooks和在这里Writing a Macro Recorder/Player using Win32 Journal Hooks

于 2008-11-15T15:38:56.200 回答
2

看起来您将不得不做一些工作来检测屏幕变化。例如,此帖子在tech-archive.net上。有了这个,您可以将一个参考屏幕复制到 RAM,然后再拿一个并比较两者。由你来定义什么样的改变是有意义的。它与这篇关于桌面捕获的文章类似。

于 2008-11-27T12:55:00.563 回答
1

我认为远程桌面像命令一样流式传输 GDI。我不知道他们最初是如何捕获它们的。

于 2008-11-11T13:16:59.770 回答
0

谢谢大家的帮助。我最终编写了一个图像差分类,它似乎以惊人的速度计算出改变的矩形。我已经在这里发布了它的工作原理。

目前我只是在计时器中执行此操作,但也计划在输入事件后执行此操作。

非常感谢您的链接 Boost - 我刚刚再次查看了这个线程,所以我会尽快查看它们。

于 2008-12-01T22:25:05.017 回答