Можно ли захватить окно с миниатюрой windows 7 DWM? - PullRequest
4 голосов
/ 04 февраля 2010

Я начинаю верить, что вы ничего не можете сделать с Windows API.

У меня есть два окна.Один из них имеет миниатюру DWM.Что я хочу сделать, так это то, что я хочу иметь возможность захватить экран окна с миниатюрой в другое окно.Когда я делаю это, используя bitblt, все копируется, кроме миниатюры.Его просто нет в растровом изображении.

Так как же работает рендеринг DWM?Я имею в виду, что если DWM отображает миниатюры непосредственно на DC зарегистрированного окна, тогда мой подход должен работать.Я в замешательстве.

Спасибо большое.

Ответы [ 3 ]

6 голосов
/ 01 июня 2010

Это не так, как работает DWM: содержимое миниатюры никогда не переносится на DC вашего окна. Вместо этого механизм представления DWM будет отображать миниатюру непосредственно над содержимым вашего окна при представлении рабочего стола.

К сожалению, нет (официального) способа получить доступ к данным изображения миниатюры DWM (однако в сети существует хак , который пытается получить доступ к базовым данным вершин и отобразить их в DirectX 9).

2 голосов
/ 07 ноября 2010

Использование

DwmRegisterThumbnail
DwmUnregisterThumbnail 
DwnUpdateThumbnailProperties
1 голос
/ 18 января 2011

Нельзя ожидать, что миниатюра будет помещена в контекст устройства окна, потому что миниатюра не помещена в контекст устройства окна. Таким образом, ваш подход не будет работать.

Но если вы пытаетесь украсть миниатюру приложения, просто попросите Dwm дать вам его миниатюру . Это позволит вам представить пользователю именно ту миниатюру, которую вы хотите.

Если, с другой стороны, вы хотите получить доступ к пикселям в миниатюре другого процесса, у вас возникла проблема.

...