【问题标题】:C++ Code for Screen Capturing用于屏幕捕获的 C++ 代码
【发布时间】:2013-10-08 16:31:49
【问题描述】:

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

的所有示例

(1) GetDC(NULL) 和带有 SRCCOPY 的 BitBlt 透明窗口 并且会导致 GDI 挂起(只需尝试在 Paint 中绘制......你的执行BitBlt操作时铅笔卡住了一段时间)

(2) GetDC(NULL) 和带有 SRCCOPY 和 CAPTUREBLT 选项的 BitBlt 隐藏光标,当 BitBlt 操作执行时,GDI Hung .

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

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

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

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

提前致谢.....

【问题讨论】:

  • 如果您的机器中已经有Qt 库,您可以使用它们获取屏幕截图。

标签: c++


【解决方案1】:

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

上述所有方法均因权限不足导致内部调用失败而失败。

如果你想一想,如果在用户级别运行 exe 甚至可以共享来自非系统级别用户的系统调用,那么系统可能存在严重的安全漏洞:我只需要提供一个你使用的应用程序,它可以共享你的屏幕,而无需你注意到了。

因此,如果您想欺骗您的公司安全政策,只需询问您的管理员:如果您出于业务目的需要这些软件,他们会做需要的事情。

【讨论】:

  • 您好 Emilio,您能否告知我需要安装什么软件以及安装后如何抓取屏幕而不会出现任何问题?您能否通过完整的解决方案提供更多指导。如果我需要让管理员安装任何软件,我会问管理员。请帮忙....
  • 除非您是第一个必须与他人进行虚拟会议的人(因此您是一名 IT 开发人员,并且您自己应该是​​本地管理员),否则您不应要求他们提供特定软件,但向他们解释你的问题是什么。公司必须已经为此制定了标准。如果没有,请安排您、您和他们的老板之间的会议,并解释问题所在。这不仅仅是“我想要这里”的问题,而是“我想要这样做,为什么......”。在问陌生人之前先问你的同事
  • ...顺便说一下,您引用了 Webex 和 Teamviewer。我可以引用 Linc 女士...您甚至可以在 PC 上进行良好的旧会议(查看 windows 文件夹)...在“共享”功能中都是相似的,但单独选择它们是没有意义的(第一个拥有可视电话的人从未进行过视频通话!)
猜你喜欢
  • 1970-01-01
  • 2017-03-15
  • 1970-01-01
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
  • 2011-09-02
  • 2012-04-19
  • 1970-01-01
相关资源
最近更新 更多