2

我有一个 Windows 应用程序,它从屏幕上抓取像素以录制(以视频的形式)到自定义屏幕共享格式。问题在于,在使用软件光标的机器上,使用 SRCCOPY|CAPTUREBLIT 从屏幕上闪烁(这样分层窗口也会显示在图像中)会导致光标闪烁,如“光标消失的情况”中所述

对于单个屏幕截图,这不是问题,但是当快速连续拍摄多个屏幕截图时,光标闪烁得很快,有时似乎完全消失了。

我已经研究过使用 Windows Media Encoder SDK(如 codeproject 文章中所述,见下文),因为它不会导致光标闪烁,但似乎无法直接访问帧数据。不幸的是,实时编码和自定义格式都是必需的,这使得 windows Media Encoder 无法用于此目的。

我也尝试过 DirectX 方式(在同一篇文章中描述,见下文),它似乎也遇到了同样的问题。

有没有其他人遇到过这个问题?一定有办法绕过它——许多商业屏幕共享程序都没有这样的问题。

文章:www.codeproject.com/KB/dialog/screencap.aspx

4

5 回答 5

0

你是对的,镜子肯定会起作用。但是,目前,由于在没有管理员权限的用户下安装时存在安全和权限问题,我正试图远离这种方法。如果我错了,请纠正我,但我认为没有任何方法可以安装没有此类权限的驱动程序。除此之外,这似乎是不必要的复杂:应该有一种更简单/侵入性更小的方法来做到这一点。(我应该在我原来的问题中提到这一点)

于 2009-08-05T03:13:15.057 回答
0

我必须克服闪烁的想法是“手动”绘制“您自己的鼠标副本”,然后进行 BitBlt 调用,或者仅使用 SRCCOPY 调用 BitBlt,然后手动捕获其顶部的任何可见透明窗口。我不知道商业的东西是如何做到的(或者 Windows 媒体编码器显然是这样做的)。

参考:http ://us.generation-nt.com/xp-bitblt-captureblt-option-help-26970632.html

于 2012-04-30T13:06:10.537 回答
0

使用镜像驱动程序怎么样?

于 2009-08-04T22:28:42.293 回答
0

只需分别复制屏幕和光标并覆盖它们。

于 2012-04-30T13:17:33.293 回答
0

您可以在 windows vista 或更高版本中使用放大 API。我在 windows xp 中找不到好主意。

于 2016-06-21T07:27:39.700 回答