通过HWND获取DXGI交换链

时间:2016-11-10 23:07:25

标签: c++ directx gdi+ rdp dxgi

有一个简单的应用程序可以作为MS RDP会话的管理员。您可以将RDP会话打开到不同的计算机,然后您可以在通用监视面板中查看它们的预览。

OLE控件用于组织RDP会话。

CWnd::CreateControl(CLSID_MsRdpClient6NotSafeForScripting, ....

以前我只是通过PrintWindow复制RDP窗口,然后在预览中显示它。

PrintWindow(hWnd, hCompatibleDC,0);

在Windows 10中,它不起作用。 Microsoft Spy ++显示以下图片

Window "Output Painter Window" OPContainerClass
   Window "Output Painter Child Window" OPWindowClass (Invisible)
   Window "Output Painter DX Child Window" OPWindowClass 

在较旧的Windows"输出画家子窗口"主要是可见的,在这种情况下,PrintWindow可以工作。

同样在Windows 10上,如果删除DXGI.dll,RDP根本不起作用。所以我认为PrintWindow不起作用,因为RDP使用DirectX来绘制窗口内容。

我想到了DirectX功能挂钩来获取图片,但它看起来很荒谬。这是一个很大的开销。我可以完全控制应用程序。我可以访问RDP OPWindowClass HWND。我甚至可以通过ShowWindow等控制它们。

有没有办法获得连接到HWND的DirectX对象(如IDXGISwapChain1或ID2D1HwndRenderTarget)?

0 个答案:

没有答案