Что такое API для «создания приложений типа Flip3D» - PullRequest
8 голосов
/ 03 октября 2010

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

Но MSDN Обзор миниатюр DWM они специально меня предупреждают:

Примечание Миниатюры DWM не позволяют разработчикам создавать приложения, такие как функция Windows Vista Flip3D (WINKEY-TAB).Миниатюры отображаются непосредственно в окне назначения в 2-D.

Мне сказали, что api для миниатюр не может быть использован для создания приложений, таких как Flip3D, но они не говорят, какие api могут можно использовать для создания приложений, таких как Windows Flip3D.

Итак, какой API можно использовать для создания приложений, таких как Windows Vista Flip3D?


Фон

При работающей композиции рабочего стола Windows приложения рисуют свои клиентские области окна в своем собственном личном буфере.(Это контрастирует с предыдущими версиями Windows, где каждое приложение рисовалось прямо на экране).Затем это изображение клиентской области помещается в рамку (строка заголовка, минимизировать, максимизировать, восстанавливать кнопки и т. Д.), А затем рисовать (т.е. комбинировать) на рабочем столе вместе со всеми остальными открытыми окнами:

alt text

Поскольку этот буфер является частным, а графические карты в последние несколько лет стали эффективными при выполнении 3D-задач, Windows может затем начать выполнять некоторые изящные приемы.Одним из них является возможность манипулировать окном клиента, выполнять его масштабирование и изменение перспективы.Это позволяет использовать API «миниатюры» в реальном времени - где Windows нарисует копию окна в виде миниатюр, в которой вы говорите.Поскольку все это происходит на аппаратном уровне, это очень быстро.

Другая возможность - это Flip3D (Win + Tab).Композитор может выполнять трехмерное позиционирование окна.Опять же, поскольку все это делается аппаратно, оно очень быстрое.

Я нашел API, который говорит монитору рабочего стола, что нужно нарисовать эскиз приложения «здесь»:

//Register a thumbnail we want
DwmRegisterThumbnail({in}hwndDestination, {in}hwndSource, out thumbnail);

// Start displaying the thumbnail
DwmUpdateThumbnailProperties({in}thumbnail, {in}thumbproperties);

Но я не могу найти API, позволяющий DWM нарисовать мне полноразмерную версию окна.


Редактировать : Вы не можете винить Microsoftдля защиты от копирования в Windows :

  • Лицензионные продукты, поставляемые в комплекте, должны соответствовать Правилам соответствия и должны быть сконструированы и изготовлены таким образом, чтобы обеспечить их эффективную frustrate пытается модифицировать такие Лицензионные продукты, чтобы нарушить требования к защите контента, указанные в Спецификации HDCP и Правилах соответствия.

  • Лицензионные продукты должны быть сконструированы и изготовлены таким образом, чтобы четко расстраивать попытки обнаружить или раскрыть ключи устройства или другую высококонфиденциальную информацию

  • Лицензионные продукты должны использовать, по крайней мере, следующие методы, четко разработанные для эффективной неудовлетворительной попытки победить требования защиты контента Спецификации HDCP и Правил соответствия

Вы должны винить Sony.

1 Ответ

1 голос
/ 30 января 2014

Взгляните на этот проект: https://github.com/gratianlup/SmartFlip. Он использует WPF и Thumbnail API.

...