我试图弄清楚如何使用 DWM 将窗口的副本渲染到我自己想要的位置。我唯一能找到的告诉 DWM 在某处渲染的方法是使用缩略图 API。
但MSDN的DWM 缩略图概述他们特别警告我:
NoteDWM 缩略图不允许开发人员创建类似的应用程序
Windows Vista Flip3D (WINKEY-TAB)
特征。缩略图已渲染
直接到目标窗口
2-D。
我被告知缩略图 api 不能用于创建像 Flip3D 这样的应用程序,但他们没有说是哪个 apican可用于创建 Windows Flip3D 等应用程序。
那么什么APIcan用于创建像 Windows Vista Flip3D 这样的应用程序?
背景
当 Windows 桌面组合运行时,应用程序将其窗口客户区绘制到其自己的专用缓冲区上。 (这与以前版本的 Windows 形成鲜明对比,其中每个应用程序都直接在屏幕上绘制)。然后将该客户区图像放置在框架中(标题栏、最小化、最大化、恢复按钮等),然后将其与所有其他打开的窗口一起绘制(即合成)到桌面上:
由于此缓冲区是私有的,并且由于过去几年显卡在执行 3D 任务方面变得更加强大,因此 Windows 可以开始执行一些巧妙的技巧。其中之一是能够操纵客户端窗口,对其执行缩放和透视更改。这允许实时“缩略图”API - Windows 将在您指定的位置绘制窗口的缩略图大小副本。由于这一切都发生在硬件中,因此速度非常快。
另一个功能是 Flip3D (Win+Tab)。合成器可以执行窗口的 3D 定位。同样,因为这一切都是在硬件中完成的,所以速度非常快。
我找到了 API 来告诉桌面窗口监视器在“此处”绘制应用程序的缩略图:
//Register a thumbnail we want
DwmRegisterThumbnail({in}hwndDestination, {in}hwndSource, out thumbnail);
// Start displaying the thumbnail
DwmUpdateThumbnailProperties({in}thumbnail, {in}thumbproperties);
但我找不到 API 来告诉 DWM 绘制全尺寸版本的窗口。
Edit: You can't blame Microsoft for copy protection in Windows: archive
-
发运的许可产品应符合合规规则,并应以明确的方式设计和制造
旨在有效地阻挠尝试修改此类许可产品以违反 HDCP 规范和
合规规则。
-
许可产品的设计和制造方式应明确旨在有效地阻挠尝试去
发现或泄露设备密钥或其他高度机密
信息
-
许可产品应至少使用以下技术,并以明确设计的方式有效地阻挠尝试
违反 HDCP 的内容保护要求
规范和合规规则
你必须责怪索尼。