Перенаправление графического вывода приложения в Windows Vista/7 (с DWM)

Я хочу создать диспетчер рабочего стола, который получает информацию обо всех запущенных приложениях, включая состояния и снимки экрана, для отображения и управления ими в моем виртуальном пространстве (возможно, в 3D). Его можно рассматривать как еще один уровень абстракции поверх самой Windows.

Поскольку многие встроенные функции Windows Vista/7, такие как Flip 3D и Live Thumbnails, могут отображать действия каждого окна в режиме реального времени. видео продолжает воспроизводиться на миниатюре панели задач, я думаю, что DWM позволяет приложению перенаправлять свой вывод куда-то еще, или некоторые специальные процессы могут собирать графические данные других приложений (возможно, только дочерних процессов). Выпустила ли Microsoft для этого набор общедоступных API? Если нет, то возможно ли это технически? И не будет ли проще, если я ограничу область применения только .NET-приложениями с WPF?


person puri    schedule 07.06.2010    source источник


Ответы (1)


Вы можете вызвать DwmRegisterThumbnail и DWM нарисует живую миниатюру внутри вашего окна.

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

person Nir    schedule 07.06.2010
comment
Это отлично работает для миниатюр. Но остается вопрос, как Flip3D (Win+Tab) или Switcher (insentient.net) удается отрисовывать окно содержание - person Ian Boyd; 03.10.2010
comment
Это немного поздно, но на случай, если кому-то все еще интересно - статья MSDN о миниатюрах DWM по адресу msdn.microsoft.com/en-us/library/aa969541(v=vs.85).aspx указывает, что эти эскизы нельзя использовать для получения эффектов, подобных Flip3D. Между прочим, я нашел DLL dwmredir.dll и посмотрел ее экспортированные функции, и я думаю, что dwmredir.dll частично отвечает за перенаправление рисования окна во внутренние буферы. - person AniDev; 21.06.2011