有一个简单的应用程序可以作为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)?