Получение DXGI swapchain от HWND

Есть простое приложение, которое работает как менеджер сеансов 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 RDP вообще не работает, если я удаляю DXGI.dll. Поэтому я считаю, что PrintWindow не работает, потому что RDP использует DirectX для рисования содержимого окна.

Я думал о перехвате функции DirectX, чтобы получить картину, но это выглядит нелепо. Это большие накладные расходы. Я могу полностью контролировать приложение. Я могу получить доступ к HWND RDP OPWindowClass. Я даже могу управлять ими через ShowWindow и т. Д.

Есть ли способ получить объекты DirectX (например, IDXGISwapChain1 или ID2D1HwndRenderTarget), которые подключены к HWND?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]