用于屏幕捕获的C ++代码

时间:2013-10-02 10:01:15

标签: c++

我需要编写代码来进行屏幕共享,例如WebEx或Team Viewer for Windows PC。要求是我没有管理员权限,而我无法安装任何应用程序或软件。我知道以下技术,但它们都不适合我。我已尝试此代码项目网址http://www.codeproject.com/Articles/5051/Various-methods-for-capturing-the-screen

的所有示例

(1)GetDC(NULL)和BitBlt与SRCCOPY< =这不会捕获透明窗口,它会导致 GDI挂起(只需尝试在Paint中绘图..当BitBlt操作执行时,你的铅笔卡住了一段时间)

(2)GetDC(NULL)和BitBlt与SRCCOPY和CAPTUREBLT选项< =当我调用BitBlt操作时隐藏光标,当BitBlt操作时 GDI Hung 进行。

(3)我还尝试使用GetFrontBufferData使用 DirectX 。这会导致透明窗口的闪烁

(4)我尝试使用 Windows Media API ,但这需要安装 Windows Media Encoder

(5)我尝试使用镜像驱动程序,但这需要使用管理员权限安装驱动程序。

任何人都可以建议API,没有任何安装,我可以捕获整个屏幕,没有闪烁或GDI挂起问题。

先谢谢.....

1 个答案:

答案 0 :(得分:1)

问题是,无论你使用什么方法,你必须挂钩系统(拦截一些操作系统到驱动程序的调用),让系统给你时间安全地进行操作。这需要在管理模式下运行任何软件。

由于没有足够的权限,一些内部呼叫失败,所有上述方法都失败了。

如果你想一想,如果在用户级别运行exe可以共享系统调用,即使是非系统级别的用户,系统也可能存在严重的安全漏洞:我只需要提供你使用的共享屏幕的应用程序而不用你注意到了。

因此,不要试图欺骗公司的安全策略,只需向管理员询问:如果您需要这些软件用于商业目的,他们将会做所需的事情。