2010-10-03 9 views
8

Estoy tratando de averiguar cómo usar DWM para representar una copia de una ventana en mi propia ubicación deseada. Lo único que puedo encontrar para decirle a DWM que realice un renderizado es con las API de las miniaturas.¿Qué es la API para "crear aplicaciones como Flip3D"

Pero MSDN de DWM Thumbnail Overview que específicamente me advierten apagado: miniaturas

Nota DWM no permiten a los desarrolladores crear aplicaciones como el Windows Vista Flip3D (winkey-TAB) función. Las miniaturas se visualizan directamente en la ventana de destino en 2-D.

Me han dicho que la API thumbnailing no se puede utilizar para crear aplicaciones como Flip3D, pero no dicen qué API puede ser usado para crear aplicaciones como la Flip3D de Windows.

¿Qué API se puede usar para crear aplicaciones como Windows Vista Flip3D?


Antecedentes

Con el escritorio de Windows en ejecución Composición, aplicaciones extraen su ventana del cliente-área en su propio buffer privado. (Esto contrasta con versiones anteriores de Windows donde cada aplicación dibujaba directamente en la pantalla). Esta imagen del área del cliente se coloca en un marco (la barra de título, minimizar, maximizar, restaurar botones, etc.) y luego dibujar (es decir, componer) en el escritorio, junto con todas las demás ventanas abiertas:

alt text

Debido a que este búfer es privado, y debido a que las tarjetas gráficas de los últimos años se han vuelto poderosas en la realización de tareas 3D, Windows puede comenzar a realizar algunos trucos ingeniosos. Una de ellas es poder manipular la ventana del cliente, realizando escalas y cambios de perspectiva en ella. Esto permite la aplicación en vivo "miniatura", donde Windows dibujará una copia en miniatura de una ventana donde se lo indique. Como todo esto sucede en el hardware, es muy rápido.

La otra habilidad es la Flip3D (Win + Tab). El compositor puede realizar posicionamiento 3D de una ventana. Nuevamente, como todo esto se hace en hardware, es muy rápido.

he encontrado la API para contar la de ventanas de escritorio monitor que me atraiga una miniatura de una aplicación "aquí":

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

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

Pero no puedo encontrar la API para contar la DWM que me atraiga la completa versión de tamaño de una ventana.


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

  • los productos con licencia según lo enviado deberá cumplir con las normas de cumplimiento y deberán diseñarse y fabricarse de una manera que es claramente diseñado para efectivamente frustrar intenta modificar tales productos con licencia para vencer los requisitos de protección de contenido de la especificación HDCP y el Reglas de cumplimiento.

  • productos con licencia deberán diseñarse y fabricarse de manera que está claramente por objeto efectivamente frustrar intentos de descubrir o revelan Claves dispositivo u otros altamente confidencial información

  • los productos licenciados deben utilizar al menos el Las siguientes técnicas, de una manera que está claramente diseñada para efectivamente frustrar intentos para vencer los requisitos de protección de contenido de la HDCP Especificación y las Reglas de cumplimiento

Tiene la culpa Sony.

+0

Yo también estoy buscando una solución; de alguna manera dudo que exista, esto es Microsoft. – AniDev

+0

dudo que exista una solución para "frustrar" * a los usuarios de Microsoft, según lo exige el acuerdo de licencia (http://en.wikipedia.org/wiki/High-bandwidth_Digital_Content_Protection) –

+3

Si este es un efecto secundario de HDCP, entonces ¿Por qué OS X tiene 'CGWindowListCreateImage'? No veo cómo se relaciona de ninguna manera. Tal vez simplemente no quieren que la gente se meta con el sistema de ventanas. En cualquier caso, siempre hay una manera. Solo requiere alguna ingeniería inversa DWM. –

Respuesta

Cuestiones relacionadas