监视当前显示的应用程序

Posted

技术标签:

【中文标题】监视当前显示的应用程序【英文标题】:Application that monitors the current display 【发布时间】:2017-08-01 19:20:32 【问题描述】:

这是一个更广泛的问题,我正在寻求帮助。我正在尝试构建一个(用户在他的监视器上看到的实际显示)。非常具体地说,我需要从桌面的特定部分(一个应用程序正在那里运行)提取数据,监视屏幕该部分的变化。我知道这些变化是视觉上的,需要图像处理。 尝试谷歌,但它一直是一场噩梦。它选择了诸如 display、monitor、extract 之类的关键字,我得到了不可用的结果。 如果以前有人这样做过,或者如果有人不能指出我正确的方向,那将非常有帮助。 谢谢!希望我已经很好地解释了我的查询。

【问题讨论】:

我猜你正在寻找一个键盘记录器。 (啧啧啧……) @RichardDunn 如果我没记错的话,键盘记录器监控键盘敲击是否正确?我正在寻找监视屏幕的一部分以进行更改,例如。文本从登录更改为注销 是的,我只是在和你开玩笑。我从未使用过显示输出等。所以... 你为什么在你的谷歌搜索中包含“显示”?它是一个图像。谁在乎它在哪里或是否显示。处理是一样的... 您可以使用nircmd nirsoft.net/utils/nircmd.html(参见表中的最后几个条目)或类似方法来非常简单地抓取屏幕,无需任何代码。你可以很容易地用 ImageMagick 处理它,但你需要更具体。 【参考方案1】:

如果你打算在 Windows 上这样做,那么最好查看 WINAPI 并从这里开始挖掘:

GetWindowRect on MSDN

FindWindow on MSDN

C++ example on Stack Overflow for getWindowRect

C++ example on Stack Overflow for FindWindow

您可以枚举窗口,在标题中搜索特定关键字,通过计时器更新窗口坐标。在你成功完成之后,在这里挖掘:

'efficiently acquiring a screenshot of the windows desktop' on Stack Overflow

'How to compare byte to byte of two bitmap screenshots in c++' on Stack Overflow

在您成功获取屏幕截图并学习如何检测更改(而不是重新处理整个图像)之后,在这里挖掘:

OCR engine - libtesseract on Github

C++ libtesseract API example on Github

学习愉快!

【讨论】:

以上是关于监视当前显示的应用程序的主要内容,如果未能解决你的问题,请参考以下文章

性能监视器的简单使用

mac怎么查看当前CPU使用情况

在当前工作的监视器上保留 WPF 窗口(在多监视器设置中)[关闭/重复]

Screen.AllScreen未提供正确的监视器计数

c#中,调试的时候,下面怎么不显示局部变量和监视窗口?

C# FileSystemWatcher 监视仅由当前系统完成的网络驱动器上的更改