C++屏幕捕获代码

C++ Code for Screen Capturing

本文关键字:代码 屏幕 C++      更新时间:2023-10-16

我需要编写代码来执行屏幕共享,例如WebEx或Windows PC的Team Viewer。要求是我没有管理员访问权限,并且无法为此安装任何应用程序或软件。我知道下面的技术,但没有一个对我有用。我已经尝试了此代码项目 URL 的所有示例 http://www.codeproject.com/Articles/5051/Various-methods-for-capturing-the-screen

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

(2( GetDC(NULL( 和 BitBlt 与 SRCCOPY 和 CAPTUREBLT 选项 <= 当我调用 BitBlt 操作时,这将隐藏光标,并且在执行 BitBlt 操作时也会隐藏GDI 挂起

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

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

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

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

提前感谢.....

问题是,无论您使用哪种方法,您都必须挂接到系统(拦截一些操作系统到驱动程序的调用(,以便系统有时间安全地进行操作。 这需要任何软件在管理模式下运行。

上述所有方法都失败了,因为一些内部调用失败,导致权限不足。

如果您稍微考虑一下,如果在用户级别运行 exe 甚至可以从非系统级别用户共享系统调用,则系统可能存在严重的安全漏洞:我只需要提供您使用的应用程序,该应用程序共享您的屏幕而不会注意到这一点。

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