我正在为 Windows 编写一种屏幕录制应用程序,并希望知道屏幕/活动窗口的何时以及哪些区域发生了变化。
是否有我可以挂钩的 Windows API 以获取屏幕更改的通知?
还是我需要手动编写这样的东西?:(
我一直认为远程桌面使用某种 API 来检测屏幕的哪些区域发生了变化,并且只发回那些图像——这正是我需要的行为。
我正在为 Windows 编写一种屏幕录制应用程序,并希望知道屏幕/活动窗口的何时以及哪些区域发生了变化。
是否有我可以挂钩的 Windows API 以获取屏幕更改的通知?
还是我需要手动编写这样的东西?:(
我一直认为远程桌面使用某种 API 来检测屏幕的哪些区域发生了变化,并且只发回那些图像——这正是我需要的行为。
我认为 Windows 中没有 API 可以告诉您屏幕的哪些部分发生了变化。
一种可能的方法是使用UltraVNC 之类的视频镜像驱动程序。
我想你会在这里找到一些线索Screen Event Recorder DLL/Application,在这里About Hooks和在这里Writing a Macro Recorder/Player using Win32 Journal Hooks
看起来您将不得不做一些工作来检测屏幕变化。例如,此帖子在tech-archive.net上。有了这个,您可以将一个参考屏幕复制到 RAM,然后再拿一个并比较两者。由你来定义什么样的改变是有意义的。它与这篇关于桌面捕获的文章类似。
我认为远程桌面像命令一样流式传输 GDI。我不知道他们最初是如何捕获它们的。
谢谢大家的帮助。我最终编写了一个图像差分类,它似乎以惊人的速度计算出改变的矩形。我已经在这里发布了它的工作原理。
目前我只是在计时器中执行此操作,但也计划在输入事件后执行此操作。
非常感谢您的链接 Boost - 我刚刚再次查看了这个线程,所以我会尽快查看它们。