我有一个Windows应用程序,可以从屏幕上抓取像素进行录制(以视频的形式)到自定义屏幕共享格式。问题是在使用软件光标的机器上,使用SRCCOPY | CAPTUREBLIT从屏幕进行blitting(以便分层窗口也显示在图像中)会导致光标闪烁,如Case of the Disappearing Cursor中所述。
对于单屏幕拍摄,这不是问题,但是当快速连续拍摄多个屏幕截图时,光标会快速闪烁,有时似乎完全消失。
我已经研究过使用Windows Media Encoder SDK(如代码项目文章中所述,见下文),因为它不会导致光标闪烁,但似乎无法直接访问帧数据。不幸的是,实时编码和自定义格式都是要求,这使得Windows Media Encoder无法用于此目的。
我也尝试过DirectX方式(在同一篇文章中描述,见下文),它似乎也遇到了同样的问题。
还有其他人遇到过这个问题吗?必须有办法绕过它 - 许多商业屏幕共享程序都没有这样的问题。
文章:www.codeproject.com/KB/dialog/screencap.aspx
答案 0 :(得分:0)
使用镜像驱动程序怎么样?
答案 1 :(得分:0)
你是对的,镜子肯定会起作用。但是,目前,我正试图远离这种方法,因为在没有管理员权限的用户下安装时存在安全性和权限问题。如果我错了,请纠正我,但我认为没有任何方法可以安装没有这些权利的驱动程序。除此之外,似乎这将是不必要的复杂:应该是一种更简单/侵入性更小的方法。 (我应该在原来的问题中提到这一点)
答案 2 :(得分:0)
我必须克服闪烁的想法是“手动”绘制“你自己的鼠标副本”,然后进行BitBlt调用,或者只用SRCCOPY调用BitBlt然后手动捕获顶部的任何可见透明窗口它。我不知道商业广告是怎么做的(或者Windows媒体编码器显然是这样做的。)
参考:http://us.generation-nt.com/xp-bitblt-captureblt-option-help-26970632.html
答案 3 :(得分:0)
只需单独复制屏幕和光标并叠加它们。
答案 4 :(得分:0)
您可以在Windows Vista或更高版本中使用Magnification API。 我在Windows XP中找不到好主意。