2014-05-08 67 views
-1

我试图从Windows服务捕获桌面屏幕截图。由于大多数在线提示的地方,由于来自Windows的会话隔离功能,很难捕获屏幕。由于好奇心,我尝试了交互式服务标志,更改帐户类型,移动到安全位置,获取Windows工作站的处理,桌面并将它们设置为线程等,但没有任何工作,每次访问被拒绝。从服务中获取屏幕截图对我来说是绝对需要的。DirectX从Windows服务捕获屏幕

所以,另一个想法是为什么不只是从服务轮询帧缓冲区或视频缓冲区来给出副本?这样我们就不必担心这些会话墙,隔离,安全等等。考虑到这一点,我认为DirectX会是更好的选择,因为它与硬件有良好的关系。

但是之后,我在DirectX中完成了零线编程。如果DirectX可以帮助完成此操作,有人可以帮助我解决一些问题吗?如果其他情况下其他驱动程序API可以帮助获取视频缓冲存储器。

+0

不需要DirectX。看看我们如何解决它:https://stackoverflow.com/a/45095509/125406 –

回答

0

我也试图从Windows服务做一些DirectX渲染,但它看起来像会话0隔离阻止访问硬件,我们不能做基于硬件的DirectX渲染。检查thisthis

+0

是的,你是对的。它不可能访问它们。我试着用diretx截图做一些飞行员。在用户桌面它工作正常。当我转移到Windows服务时,它开始返回'NULL'句柄。我的帖子[http://social.msdn.microsoft.com/Forums/vstudio/en-US/e962ac30-540f-48c3-ab4a-d14145b085b6/directx-to-capture-screen-from-windows-service?forum=vcgeneral msdn中的#89eb6999-e30e-4293-b2df-43452c907413]得到了相似的答案。看来我们必须改变架构。 –