我有一个windows应用程序,它可以从屏幕上抓取像素,以便录制(以视频的形式)为自定义的屏幕共享格式。问题是,在使用软件光标的计算机上,使用SRCCOPY|CAPTUREBLIT从屏幕上闪动(以便分层窗口也显示在图像中)会导致光标闪烁,如Case of the Disappearing Cursor中所述。
对于单个屏幕截图,这不是问题,但当快速连续拍摄多个屏幕截图时,光标闪烁得如此之快,有时似乎完全消失了。
我已经研究过使用Windows Media Encoder SDK (如下面的代码项目文章中所述),因为它不会导致光标闪烁,但似乎没有直接访问帧数据的方法。不幸的是,实时编码和自定义格式都是必需的,这使得windows Media Encoder无法用于此目的。
我也尝试过DirectX方法(在同一篇文章中描述,见下文),它似乎也遇到了同样的问题。
有没有其他人遇到过这个问题?一定有办法绕过它--许多商业屏幕分享程序都没有这样的问题。
文章:www.codeproject.com/KB/dialog/Screence.aspx
发布于 2009-08-04 22:28:42
使用镜像驱动怎么样?
发布于 2009-08-05 03:13:15
你说得对,一面镜子肯定能用。然而,目前,我正试图远离这种方法,因为在没有管理员权限的用户下安装时,存在安全和权限方面的问题。如果我错了,请纠正我,但我认为没有这样的权限是无法安装驱动程序的。除此之外,这似乎是不必要的复杂:应该有一种更简单/更少侵入性的方法来做到这一点。(我应该在我的原问题中提到这一点)
发布于 2012-04-30 21:06:11
我必须克服闪烁的想法是“手动”绘制“你自己的鼠标副本”,然后进行BitBlt调用,或者只使用SRCCOPY调用BitBlt,然后手动捕获上面任何可见的透明窗口。我不知道商业广告是怎么做到的(或者说windows media编码器是怎么做到的)。
参考:http://us.generation-nt.com/xp-bitblt-captureblt-option-help-26970632.html
https://stackoverflow.com/questions/1229271
复制相似问题