2011-10-29 207 views
0

我有一个问题,如何检测屏幕上的变化?它的位置是没有必要的,但有可能获得它的位置,这将是有益的。我在互联网上搜索它,但没有找到任何合适的答案。现在,我正在用C#编写一个程序,并且必须检测屏幕上的更改。我试图每秒捕捉四个屏幕截图并进行比较。这种方法很有效,但对PC的性能影响很大。如何检测屏幕上的变化?

我认为使用C或汇编语言(x86)很容易,因为在汇编中我们可以直接访问视频内存。

在C#中可以做到吗?

代码示例将不胜感激。

项目:检测全屏幕相机监控软件的任何变化。

+3

我很确定访问视频内存不像以前那样容易,因为现在更复杂的图形卡很常见。 – icktoofay

+0

我可以问你想完成什么?制作一个能够对屏幕上的每一个变化(即使只是一个像素)都做出反应的程序似乎并不正确。你可能有不同的路线来完成你的任务 –

+0

你在寻找某种运动检测代码 –

回答

1

,你真正寻找只为你看到你的显示器上有什么简单的区别?我怀疑会做这项工作。 对于来自凸轮输入的运动检测,您可以看看CodeProject上的Motion Detection Algorithms文章。

1

除了拍摄画面捕捉和他们在一些时段比较(这将导致性能问题), 我能想到的唯一的办法就是挂接到系统事件中,“重绘”类型的事件。

您将需要选择与您的程序挂钩的事件。

这CodeProject上的教程可以帮助 - http://www.codeproject.com/KB/system/WilsonSystemGlobalHooks.aspx