是否可以在Windows上使用.NET完全接管多个屏幕的一个屏幕?

all*_*llu 11 .net c# directx

使用在Windows XP/Vista/7/8上运行的.NET(任何版本) - 可以为全屏应用程序保留一个屏幕并在其上显示数据/图形/任何内容,同时为Windows UI用户保留任何其他屏幕桌面或其他应用程序之类的交互?

这里的使用场景/规则如下:

  1. PC必须能够按原样运行所有程序.

  2. .NET内容不需要交互性(即没有按键,鼠标点击等).

  3. 没有其他应用程序的其他UI或对话框可以穿透保留用于显示.NET可执行文件输出的预定义屏幕.

  4. 具有.NET内容的预定义屏幕必须没有可见的鼠标光标,其他屏幕必须具有光标边界,就好像根本没有额外的屏幕(即光标必须停在一个或多个桌面的边缘).

  5. 即使PC已锁定(即用户已登录但工作站已从Explorer锁定),内容也必须可见.

我知道我可以通过驱动辅助监视器或其他显示设备的一些外部USB控制器来实现这一点,然后手动构建要推送到此接口的内容/图形,但我要求我可以使用普通的WDDM驱动程序执行此操作普通显示器?

编辑:为了进一步澄清 - 我知道有多种方法可以实现类似的结果,但这里的问题是可以遵守上述所有规范/规则.

all*_*llu 0

所选择的在某种程度上符合所有设计规则的方法是......等等......虚拟化。然而,它不符合仅使用 .NET 可执行文件(侵入 WDDM)的要求。

原始 PC 是具有两个来宾的虚拟化主机。一种用于 .NET 应用程序,另一种用于分配了正确 USB 等的最终用户。这种方法自然有很多注意事项:

  • WDDM 没有以任何方式得到利用,并且可能存在性能问题。然而,对于休闲办公应用程序来说,这根本不是问题。
  • 除非使用 Hyper-V,否则虚拟化软件始终是第三方的。
  • Hyper-V 中的 Hyper-V 是不可能的,因此来宾无法进一步虚拟化任何东西(至少不能以任何合理的速度,因为它将在没有虚拟机管理程序的情况下运行)。
  • 在某些情况下,任何软件都需要多个许可证。
  • 两个来宾之间的 .NET 可执行文件与其他应用程序之间没有 IPC 或其他交互。

然而,该解决方案本身工作得很好——只要底层主机通电并且不会自行崩溃,用户就无法覆盖附加屏幕上显示的内容或与之交互。锁定最终用户 PC 不会影响其他来宾等。