2

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 

古い W​​indows では、「Output Painter Child Window」が主に表示され、この場合 PrintWindow が機能します。

また、Windows 10 では、DXGI.dll を削除すると RDP がまったく機能しません。したがって、RDP は DirectX を使用してウィンドウ コンテンツを描画するため、PrintWindow は機能しないと思います。

画像を取得するために DirectX 関数をフックすることを考えましたが、ばかげているように見えます。それは大きなオーバーヘッドです。アプリケーションを完全に制御できます。RDP OPWindowClass HWND にアクセスできます。ShowWindow などを介してそれらを制御することもできます。

HWND に接続されている DirectX オブジェクト (IDXGISwapChain1 や ID2D1HwndRenderTarget など) を取得する方法はありますか?

4

0 に答える 0