使用重定向的用户输入和图形输出在“虚拟桌面”上运行应用程序

时间:2013-12-03 13:46:37

标签: screenshot virtual terminal-services

我想将某些应用程序/窗口的视觉外观(实时)呈现给直接x网格对象。例如,假设我想要将某个页面打开到直接x中的矩形来呈现Internet Explorer。

我需要的是该应用程序的屏幕截图。稍后,我还想将鼠标或用户输入重定向到应用程序,以便可以从直接x应用程序引导它。所以我需要一个启动应用程序的可能性,不可见(因为主要的直接x程序在屏幕上运行),并想要获取它当前外观的截图。此图像/程序快照可以呈现为直接x对象。

我试过某些模特:

  • 我创建了一个虚拟桌面(API CreateDesktop)。在这里,我可以开始我的申请。但是当这个虚拟屏幕不可见时,无法创建屏幕截图!由于我使用时间关键的直接x应用程序,因此我无法选择切换到虚拟桌面,抓取屏幕截图并返回。由于我想启动多个应用程序(例如更多的Internet浏览器,电子邮件,记事本等等),这也不是一个好主意。

  • 我尝试启动隐藏在当前屏幕上的应用程序。同样的问题:我无法获取截图(使用PrintWindow(IntPtr hWnd,IntPtr hdcBlt,int nFlags)API我可以抓取提供句柄的截图。但是如果应用程序被隐藏,则不会创建进程的Process.MainWindowHandle - 这是我注意到虚拟屏幕也出现了同样的问题。

整个场景必须以某种方式工作(参见终端服务器)。

有人有想法,如何实现这个目标?

操作系统:Windows 7,语言:C#

祝你好运

1 个答案:

答案 0 :(得分:0)

不可能制作另一个桌面或隐藏应用程序的屏幕截图 - 它们不会被任何设备吸引,因为没有必要,它可以节省CPU / GPU的能力。只能看到一个桌面(并且将呈现该桌面)并一次接收输入。

您始终可以在桌面之间切换。

另一个选择是挂钩到windows / directx dll并捕获函数调用,但这需要很多工作;)