【问题标题】:Which Windows (C++) screen capture libraries fit my requirements?哪些 Windows (C++) 屏幕捕获库符合我的要求?
【发布时间】:2009-09-11 14:27:49
【问题描述】:

我已准备好将我们应用程序的屏幕捕获功能外包出去,因为这不是我们的核心业务,而且我花了太多时间试图让我们的代码完成我需要的所有事情。我想是时候找专家了。我的要求按重要性降序排列如下。有没有人使用过满足大部分或所有这些要求的任何商业或免费库?

  1. 必须在 Windows XP 及更高版本中工作。 (但不是 Win95/98/Me。)

  2. Visual C++ 2005 兼容,可以从我的代码触发屏幕截图。最好是静态库,但 DLL 或 COM 对象也可以。我不希望使用独立的 EXE,因为有些用户会尝试篡改我们的应用程序,而我认为拥有一个明显的单独的屏幕截图 EXE 让这太容易了。

  3. 必须能够截取多个监视器系统的完整屏幕截图。 (最好是 Windows 中“打印屏幕”键的方式,通过制作拼接在一起的显示位图,但如果我必须单独拍摄照片并自己组合它们,这是可以接受的。)

  4. 当远程桌面客户端(或任何 RDP 客户端或 VM)处于全屏模式时,必须能够正确捕获屏幕。 (当然,当 RDP 处于窗口模式时它也应该工作,但只要它不通过模拟可能被传输到远程操作系统而不是在本地处理的按键来操作,这应该不是问题。 )

  5. 当 Windows Media Player(或任何其他媒体播放器)处于全屏模式时,必须能够正确截屏。

  6. 必须能够在游戏(例如魔兽世界)处于全屏模式时正确截屏。

  7. 如果能够将几秒钟的用户活动捕获为视频,那就太好了。

【问题讨论】:

  • 我不认为 stackoverflow 真的应该成为一个工作的董事会。
  • 我不明白乍得的评论。我正在就针对特定任务的正确编程工具寻求建议——这对我来说似乎完全符合主题。
  • 您找到解决方案了吗?我面临同样的问题。
  • 不完全是。我最后只是用 C# 编写了一个控制台应用程序,它使用 System.Drawing.Graphics.CopyFromScreen 拍摄快照。不能解决一些更高数量的要求,但这是我能做的最好的。 (并且要求 1 和 2 不再相关。)

标签: windows visual-c++ screenshot


【解决方案1】:

我不知道有哪个库可以满足您的需求。

如果我必须对您的要求进行编码,我可能会使用 TightVNC 服务器的源代码作为我的起点。我认为它有技术可以做你清单上的所有事情,除了......

我不确定从技术上讲是否有任何东西可以对某人的远程桌面会话进行屏幕截图。想一想:使用同一个物理远程桌面服务器可能会发生多个远程桌面会话(csrss.exe 进程)。如果您坐在机器前看着视频监视器,您根本看不到任何事情发生。那么你希望捕捉到什么。 VNC 只会捕捉“真实”视频(非远程 csrss.exe)发生的情况。

【讨论】:

  • 点了。我只是想查看远程桌面客户端向用户显示的内容,这只是在全屏模式下才会出现的问题。
  • 您是说您已经有办法在远程桌面服务器上运行可以记录给定 Windows 远程桌面客户端所看到内容的软件吗?
  • 我不想在 RDP 服务器上运行任何东西(即使出于各种法律和后勤原因,我也不想运行。)我只是在寻找以编程方式执行的操作“打印屏幕”键可以,希望在我的愿望清单上有额外的项目。 (我目前正在模拟 Print Screen 按键,但这不可靠,并且在全屏模式下不起作用。)
  • 啊,我误会了。但我仍然坚持我的建议,即根据您的目的调整 VNC 技术。
  • 他需要同时渲染directx和普通桌面窗口这一事实似乎使使用tightVNC服务器成为一个不错的选择......也许stackoverflow.com/questions/6236499/…
【解决方案2】:

我不知道这是否真的有帮助,但最好的图像库可以从

获得

www.accusoft.com 和

www.leadtools.com

两者都支持创建屏幕截图,但我不知道他们是否会正确捕获通过图形加速或从屏幕录制电影显示的电影播放器​​输出。

【讨论】:

  • 谢谢。我会检查 accusoft,但我与 LEADTOOLS 交谈过,他们还不支持多显示器。 (我的愿望清单上的一些较高的数字我可以没有,但那是一个破坏交易的人。)
【解决方案3】:

我们办公室的一些人正在使用 Magick++(一个 ImageMagick 库)来制作屏幕截图。我不知道所有规格,但您可以查看一下,看看它是否符合您的要求。

希望这会有所帮助。

问候,

塞巴斯蒂安

【讨论】:

  • 这个库中有一个截屏功能,但是从文档中并不清楚它是否除了基本功能之外还有什么。如果我找不到更具体的任务,我会试一试
【解决方案4】:

如果我是你,我会调查WindowsClippings,这是一个用 C++ 编写的非常成熟且可扩展的应用程序,可以满足你的需要。它有一个 API,您可以根据自己的需求进行扩展,而且价格非常便宜,只需 18 美元

【讨论】:

  • 我实际上自己使用 WindowClippings,但由于它是一个单独的应用程序,我们必须付费才能获得许可和分发它,我认为我的老板不会这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-09
  • 1970-01-01
  • 2017-03-15
  • 1970-01-01
  • 2011-09-02
  • 2012-04-19
  • 2013-08-23
相关资源
最近更新 更多