MS RDP セッションのマネージャーとして機能する単純なアプリケーションがあります。さまざまなコンピューターへの RDP セッションを開くと、共通の監視パネルでそれらのプレビューを確認できます。
OLE コントロールは、RDP セッションを編成するために使用されます。
CWnd::CreateControl(CLSID_MsRdpClient6NotSafeForScripting, ....
以前は、RDP ウィンドウを PrintWindow 経由でコピーして、プレビューに表示していました。
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 では、「Output Painter Child Window」が主に表示され、この場合 PrintWindow が機能します。
また、Windows 10 では、DXGI.dll を削除すると RDP がまったく機能しません。したがって、RDP は DirectX を使用してウィンドウ コンテンツを描画するため、PrintWindow は機能しないと思います。
画像を取得するために DirectX 関数をフックすることを考えましたが、ばかげているように見えます。それは大きなオーバーヘッドです。アプリケーションを完全に制御できます。RDP OPWindowClass HWND にアクセスできます。ShowWindow などを介してそれらを制御することもできます。
HWND に接続されている DirectX オブジェクト (IDXGISwapChain1 や ID2D1HwndRenderTarget など) を取得する方法はありますか?