Я смотрел на Пример дублирования DXGI Desktop на MSDN, который выглядит очень хорошо, но не ясно, что это будет работать для того, что я хочу сделать.
То, что я хотел бы сделать, это использовать Win32 Desktop API создать новый рабочий стол (CreateDesktop
) затем переключитесь на этот рабочий стол (SwitchDesktop
), а затем на этом новом рабочем столе я хотел бы создать окно и сделать предварительный просмотр исходного рабочего стола.
Несмотря на название, API-интерфейсы DXGI больше похожи на «экраны», а не на десктопы, в смысле Win32. Прежде чем я потратил много времени, пытаясь реализовать это только для того, чтобы выяснить, что это не работает, я надеялся, что кто-то, более осведомленный в этих API, сможет подключиться и направить меня в правильном направлении.
Предыдущие попытки сделать это с другими распространенными методами захвата экрана привели к сбою, так как изображения всегда черные. Я надеюсь, что DXGI позволит мне преобразовывать неактивные рабочие столы в текстуру DirectX, которую я затем смогу отобразить в своем приложении.
Я думаю, что ответом на это является то, что вы не можете сделать это. С тех пор я отказался от этого подхода и теперь считаю, что API RDP — это то, что мне действительно нужно для этого. Я думаю, что в DXGI, когда они говорят «Рабочий стол», они на самом деле означают «Экран».
Я пока не смог понять, как это сделать с API RDP, но я верю, что это возможно.