2010-10-03 9 views
8

Próbuję dowiedzieć się, jak użyć DWM do renderowania kopii okna w mojej wybranej lokalizacji. Jedyne, co mogę powiedzieć DWM, aby gdzieś je renderować, to miniatury API.Co to jest API do "tworzenia aplikacji, takich jak Flip3D"?

Ale MSDN na DWM Thumbnail Overview one specjalnie ostrzec mnie: miniatury

Uwaga DWM nie pozwalają programistom tworzyć aplikacje jak Windows Vista Flip3D (Winkey-TAB) funkcji. Miniatury są renderowane bezpośrednio w oknie docelowym w postaci 2-D.

Powiedziano mi, że api miniatur nie mogą być wykorzystywane do tworzenia aplikacji, takich jak Flip3D, ale nie mówią których api może być wykorzystywane do tworzenia aplikacji, takich jak Windows Flip3D.

Cóż za API można użyć do tworzenia aplikacji takich jak Windows Vista Flip3D?


Tło

Z pulpitu Windows pracującym skład, aplikacje czerpią okno klienta obszaru na własnym buforze prywatnego. (Kontrastuje to z poprzednimi wersjami systemu Windows, gdzie każda aplikacja została narysowana bezpośrednio na ekranie). Obraz obszaru roboczego jest następnie umieszczany w ramce (pasek tytułu, zminimalizuj, zmaksymalizuj, przywróć przyciski itp.), A następnie narysuj (np. Złożony) na pulpicie - razem z wszystkimi innymi otwartymi oknami:

alt text

Ponieważ ten bufor jest prywatny, a karty graficzne w ciągu ostatnich kilku lat stały się potężne przy wykonywaniu zadań 3D, system Windows może zacząć wykonywać kilka fajnych sztuczek. Jedną z nich jest możliwość manipulowania oknem klienta, wykonywaniem skalowania i zmian perspektywy. Pozwala to na podgląd "miniatur" na żywo - gdzie system Windows narysuje kopię rozmiaru miniaturki okna, w którym zostaniesz poinformowany. Ponieważ wszystko dzieje się na sprzęcie, jest bardzo szybki.

Inną możliwością jest Flip3D (Win + Tab). Kompozytor może wykonać 3d pozycjonowanie okna. Ponownie, ponieważ wszystko to odbywa się na sprzęcie, jest bardzo szybki.

Znalazłem API do powiedzenia Desktop okno monitora zwrócić mi miniaturę aplikacji „tutaj”:

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

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

Ale nie mogę znaleźć API do powiedzenia DWM zwrócić mi w pełnym wymiarze rozmiar wersji okna.


Edit: You can't blame Microsoft for copy protection in Windows:

  • licencjonowanych produktów jak dostarczane są zgodne z zasadami zgodności i powinny być zaprojektowane i wykonane w taki sposób, że jest wyraźnie zaprojektowany, aby skutecznie frustrować próbuje zmodyfikować takie licencjonowane produkty, aby pokonać wymagania dotyczące ochrony treści określone w specyfikacji HDCP i Reguły zgodności.

  • licencjonowanych produktów powinny być zaprojektowane i wykonane w sposób, który jest wyraźnie przeznaczone do efektywnego udaremnić Próby wolno ujawniać Klawisze urządzenia lub innego wysoce poufnych Informacja

  • licencjonowanych produktów stosują przynajmniej następujące techniki, w sposób wyraźnie zaprojektowany w celu skutecznego wyeliminowania wymagań ochrony danych określonych w specyfikacji HDCP HDCP

Musisz obwiniać Sony.

+0

Ja też szukam rozwiązania; jakoś wątpię, że taki istnieje, to jest Microsoft. – AniDev

+0

Wątpię, czy istnieje rozwiązanie, aby * "frustruć" * użytkowników Microsoft, zgodnie z umową licencyjną (http://en.wikipedia.org/wiki/High-bandwidth_Digital_Content_Protection) –

+3

Jeśli jest to efekt uboczny HDCP, to dlaczego OS X ma 'CGWindowListCreateImage'? Nie widzę, jak to jest w jakikolwiek sposób powiązane. Może po prostu nie chcą, żeby ludzie wpadali w system okien. W obu przypadkach zawsze istnieje sposób. Po prostu wymaga trochę inżynierii odwrotnej DWM. –

Odpowiedz

Powiązane problemy