I have a number of fullscreen-only applications that do not support scaling that I need to show on a single display. Some are showing video, all are showing content that updates frequently. Several of the applications cease rendering in the event they are minimized or occluded. We have no ability to change the applications behavior. None are showing protected media, nor does the system have to support playback of protected content.
Desired scenario:
Can I create virtual display devices using the Indrect Display Driver Model and render the frames to a surface in our application? How do I handle OPM? Is there a better way available?
Alternatives considered:
- Move and resize the windows themselves
Problem: I have no way to scale the windows when in the "thumbnail" sized view - Render occluded windows via DWM Thumbnail API
Problem: some windows do not render when occluded. - Use desktop mirroring API to capture program
Problem: We do not have a way to create "dummy" displays - Create one or more VMs and run each program on its own desktop. Transport video back to host via RDP using the Desktop Sharing API or a hypervisor-specific API
Problem: licensing, complexity, stuttering video - Use Remote Desktop Services to create multiple sessions
Problems: Licensing, complexity - Use a multi-port display adapter with "dummy" connectors, then use DWM or Desktop Mirroring
Problems: Hardware cost, fixed resolutions supported, setup complexity