“创建像 Flip3D 这样的应用程序”的 API 是什么?

2023-11-24

我试图弄清楚如何使用 DWM 将窗口的副本渲染到我自己想要的位置。我唯一能找到的告诉 DWM 在某处渲染的方法是使用缩略图 API。

但MSDN的DWM 缩略图概述他们特别警告我:

NoteDWM 缩略图不允许开发人员创建类似的应用程序 Windows Vista Flip3D (WINKEY-TAB) 特征。缩略图已渲染 直接到目标窗口 2-D。

我被告知缩略图 api 不能用于创建像 Flip3D 这样的应用程序,但他们没有说是哪个 apican可用于创建 Windows Flip3D 等应用程序。

那么什么APIcan用于创建像 Windows Vista Flip3D 这样的应用程序?


背景

当 Windows 桌面组合运行时,应用程序将其窗口客户区绘制到其自己的专用缓冲区上。 (这与以前版本的 Windows 形成鲜明对比,其中每个应用程序都直接在屏幕上绘制)。然后将该客户区图像放置在框架中(标题栏、最小化、最大化、恢复按钮等),然后将其与所有其他打开的窗口一起绘制(即合成)到桌面上:

alt text

由于此缓冲区是私有的,并且由于过去几年显卡在执行 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 的内容保护要求 规范和合规规则

你必须责怪索尼。


看看这个项目:https://github.com/gratianlup/SmartFlip。它使用 WPF 和缩略图 API。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“创建像 Flip3D 这样的应用程序”的 API 是什么? 的相关文章

  • Arch Linux 美化 (st + dwm)

    我的dwm 配置 xff1a https github com GIN 18 dwm 我的st配置 xff1a https github com GIN 18 st 文章目录 1 安装 st2 安装 dwm3 美化壁纸 feh 合成管理器
  • dwm-1000 测距总是出现 #define SYS_STATUS_RXPTO 0x00200000UL /* Preamble detection timeout */

    ex 05b ds twr resp 程序 总是出现 致使官方的代码 无法实现通讯 define SYS STATUS RXPTO 0x00200000UL Preamble detection timeout 需要着重修改参数
  • 翻转图像存储为 byte[] 数组

    我有一个存储为 byte 数组的图像 我想在将其发送到其他地方 作为 byte 数组 进行处理之前翻转该图像 我四处搜索 无法找到不操作 byte 数组中每一位的简单解决方案 将字节数组 转换为某种图像类型 使用现有的翻转方法翻转它 然后将
  • 在 Win32 应用程序中模仿 Acrylic

    微软最近宣布亚克力 Fluent Design 中类似玻璃的材料 它仅以 XAML UWP 形式呈现 但看起来与玻璃非常相似 只是它可以任意着色 并且可以在应用程序内应用于 Flyover 控件以及应用程序的独立窗口 食谱 让它看起来好像是
  • Delphi - Windows Aero 资源

    有人有关于 7 或 Vista 上的 Delphi 和 Windows Aero 的好资源吗 我们即将将 Windows 7 添加到我们的公司 并希望确保我们的内部应用程序尽可能适应 使用 Delphi 2010 我可以添加玻璃框架 菜单栏
  • Delphi 7 - 不捕获表单的屏幕截图 - Windows 8 - DWM.exe

    朋友们 需要对没有我的表格的所有桌面进行屏幕截图并加载到 TImage 中 在 Windows XP 7 中成功 只需 ALPHABLEND TRUE SCREENSHOT PROCEDURE 但相同的代码在 Windows 8 中不起作用
  • 如何从 C# 或 VB.Net 使用 Win32 'DwmSetIconicThumbnail'?

    我想使用DwmSetIconicThumbnail函数为我的应用程序的缩略图预览设置静态图像 正如上面的参考链接中指出的 首先需要调用Dwm设置窗口属性启用DWMWA FORCE ICONIC REPRESENTATION and DWMW
  • Delphi:如何以相反的顺序删除子类?

    迈克 利施克的TThemeServices子类Application Handle 以便它可以接收来自 Windows 的广播通知 即WM THEMECHANGED 当主题改变时 它子类化了Application对象的窗口 FWindowH
  • 不可调整大小的窗口边框和定位

    如果我创建不可调整大小的 JFrame 并且启用了 windows AerosetLocation似乎没有正确考虑窗口边框 在下面的代码中 我希望第二个框架位于第一个框架的右侧 而不是边框 重叠 如果 Aero 被禁用或者如果我删除对set
  • win32应用程序中的亚克力材质

    微软最近展示了他们新的 流畅 设计语言 其中之一就是 亚克力 材质 https learn microsoft com de de windows uwp style acrylic 此效果使元素透明并模糊背景 它可以应用于窗口 以便底层窗
  • 单击另一个 DIV 后恢复翻转 DIV

    看看这个link http ananiadis com gr index2 php page id 560 如果您单击某个产品 它会翻转并显示一些信息 您可以在给定时间翻转所有产品 我希望只能拥有一件翻转产品 每次有人点击另一个产品时 我都
  • jQuery 添加一个类 - 我尝试过的所有方法都会在单击时删除该类

    我正在使用一个 3D 旋转按钮 其中每个面都有不同的短语 但两者都是指向同一 URL 的链接 我最初使用普通的旧 css hover 旋转立方体按钮 但我注意到当您单击该按钮时它会重置 仅当鼠标不再位于按钮上时 它才应旋转回起始位置 我创建
  • 使用自动布局时如何制作从一个 UIView 到另一个 UIView 的翻转动画?

    我总是使用以下代码在一个视图和另一个视图之间制作翻转动画 UIView transitionFromView firstView toView secondView duration 0 6 options UIViewAnimationO
  • 禁用 JFrame 中的背景绘制以正确显示 Aero (DWM) 效果

    我在 Java Windows 上使用 Windows Vista 7 的 DWM 功能时遇到问题 我想让我的框架背景使用 Aero 风格 执行此操作的 Windows API 由函数提供DwmExtendFrameIntoClientAr
  • AS3 中的 Flash 翻页卷曲效果

    我正在开发一个项目 需要使用 Flash 开发翻页 卷曲 效果 如下例所示 http www actionscript org showMovie php id 459http www actionscript org showMovie
  • NetworkX:翻转图

    有没有办法以相反的顺序生成图形 即我想生成垂直翻转的图形 或者如果我可以在绘制之前用一些 matplotlib 子例程翻转它 F e 我希望 357 和 358 位于顶部 1 6 位于底部 只需交换您的位置坐标即可 import netwo
  • 以编程方式最大化屏幕一半的窗口

    我想最大化屏幕左侧的随机窗口 我可以在我的代码中使用 Windows Aero 函数吗 这个窗口can像用鼠标一样最大化 我只想以编程方式做到这一点 I use C 我可以得到IntPtr窗户的 如果可能的话 不要伪造鼠标或键盘输入 这可以
  • C++ 抛硬币程序错误

    我正在尝试计算抛硬币中连续的正面朝上的次数 不幸的是 我的连续头计数器没有正确增加 有任何想法吗 代码和示例输出如下 include
  • HTML Canvas:如何绘制翻转/镜像图像?

    当我在 HTML 画布上绘制图像时 我试图翻转 镜像图像 我发现一个游戏教程显示了角色必须面对的每个方向的精灵表 但这对我来说似乎不太正确 特别是因为每个框架都有不同的尺寸 实现这一目标的最佳技术是什么 我尝试致电setScale 1 1
  • 单击 div 中的图像时如何翻转该 Div?

    好吧 我对编写 Javascript 知之甚少 我可以对其进行一些编辑 并且涉足了 CSS3 动画 我将向您展示我正在努力实现的目标 然后在下面进行解释 网站布局将是这样的 https i stack imgur com RMb4R jpg

随机推荐

  • 将 Eigen 库添加到 Android NDK

    我需要在我的 Android Studio 项目中包含 Eigen 库来执行一些线性代数运算并使用我为桌面开发的一些 C 代码 我一直在寻找有关此主题的信息 但没有太多 而且我是 Android NDK 的新手 Eigen 库不需要编译 所
  • 正则表达式匹配除字符列表之外的所有内容

    我想匹配包含除指定字符之外的所有内容的行 I V X M C D L new Regex is I V X M C D L 应该匹配除中提到的字符之外的所有内容OR list 应匹配 name is a 不应该匹配 edition is I
  • Python IMAP 搜索指定电子邮件地址或发送至指定电子邮件地址

    我将其与 Gmail 的 SMTP 服务器一起使用 并且我想通过 IMAP 搜索发送到某个地址或从某个地址接收的电子邮件 这就是我所拥有的 mail imaplib IMAP4 SSL imap gmail com mail login u
  • 命名约定 - C++ 和 C# 变量中的下划线

    常见的是看到一个 var类字段中的变量名 下划线是什么意思 所有这些特殊命名约定都有参考吗 下划线只是一种约定 而已 因此 每个人的使用总是有些不同 以下是我对这两种语言的理解 在C 中 下划线通常表示私有成员变量 在 C 中 我通常只在为
  • 使用绝对定位是否被认为是不好的做法? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我正在开发一个网页 在其中放置一个类似国际象棋的游戏的棋盘 以及几个棋子托盘 这一切都是使用 HTML 完成的 使用 jQuery 在玩游戏时进行动态更新 在某个地方 我认为在页面内使用元
  • p5.j​​s 中的碰撞处理

    我一直在使用 p5 js 并且已经弄清楚如何让对象来检测碰撞 但我对如何处理这些碰撞感到非常困惑 我尝试将玩家速度设置为 0 但随后玩家卡住了 我也尝试过将碰撞分开到每一侧 但这也不起作用 这是我的带有碰撞函数的玩家构造函数 class P
  • React CSS 模块的几个 CSS 文件

    我有2个相同的组件 它们的样式有点不同 所以我想重用通用样式 但不想为它们使用全局CSS 我该如何实现呢 import React from react import commonStylesfrom common table css im
  • 有没有在react-native中实现JavaScriptModule的指南?

    有兴趣直接实施native to javascript调用react native 但没有找到任何指南 请帮助提供一些在 React Native 中创建和注册本机 JavaScript 模块的示例 已经从官方那里找到了代码原生模块 and
  • 如何在 Oracle 的 SQLData.writeSQL() 中将 java.sql.Array 写入 java.sql.SQLOutput

    我已经实施了java sql SQLData为了使用 ojdbc6 将 UDT 对象绑定到准备好的语句 现在 我的一些 UDT 包含数组 我现在需要做的是 class MyType implements SQLData public voi
  • 批量:删除文件扩展名

    我有来自维基百科的以下批处理脚本 echo off for R C Users Admin Ordner f in flv do echo f pause 在 for 循环中 所有扩展名为 flv 的文件都会得到回显 但我想对文件进行一些操
  • 在 Perl 中对非常大的数字执行数学运算

    我遇到的情况是 数据文件中的某些值具有 64 位环绕 这使得它们非常大 例如 18446744073709551608 所以我必须对 2 64 进行减法 我用简单的方法尝试了这个 2 64 18446744073709551608 但我猜这
  • 从字符串创建 MySQL SET

    有没有办法在 MySQL 中从一串分隔值创建一个集合 例如 快速的棕色狐狸 gt 那个 快速 棕色 狐狸 一种没有位调整的逆 EXPORT SET Regards 如果您尝试在IN语句 您可以进行如下比较 而不是拆分字符串 SELECT F
  • 如何在 sp2013 中使用 REST api 将用户添加到共享点列表项用户字段?

    我有一个基本的共享点列表 其中包含人员字段 现在我尝试使用 REST API 添加新的列表项 并尝试将人员字段设置为我的别名 但它不起作用并引发以下错误 看起来我的用户数据传递方式有问题 但我无法在线找到任何帮助 你们能否帮助我们以正确的方
  • Spring引导登录到多个文件

    有什么方法可以根据配置将 Spring Boot 日志记录配置到多个文件 控制台 即某些日志语句应写入审核文件 而普通日志语句应写入控制台 普通日志文件 下面是我在 Spring Boot 示例应用程序上尝试过的代码 logback spr
  • 如何更改android中溢出菜单的背景颜色

    我想更改溢出弹出菜单的背景颜色以匹配主屏幕的背景 有谁知道我该怎么做 Thanks 如果您使用工具栏 首先需要将此行添加到工具栏布局中 app popupTheme style ThemeOverlay MyTheme 它应该看起来像这样
  • 日期时间可以为空吗?

    如何为可为空的日期时间创建 setter 和 getter 属性 例如 private DateTime mTimeStamp public DateTime TimeStamp get return mTimeStamp set mTim
  • PHP 检查日期是否是过去 30 天

    我这里有点问题 我将日期插入数据库 date last applied 我可以通过使用来调用它 row date last applied 当然 现在 我需要检查这个插入的日期是否是30 天前如果是 则执行一个操作 query SELECT
  • 在同一域上使用 nginx 为多个节点应用程序提供服务

    我想使用来自同一域的 nginx 托管 2 个不同的节点应用程序 但遇到了一些麻烦 我想拥有 mydomain com指向节点应用程序firstApp and otherapp mydomain com指向节点应用程序otherapp 现在
  • 删除指针和将其设置为 nullptr 之间有什么区别? [复制]

    这个问题在这里已经有答案了 正在说delete pointer and pointer nullptr相同 可能不会 但是后者会释放内存吗 关于什么delete pointer pointer nullptr pointer nullptr
  • “创建像 Flip3D 这样的应用程序”的 API 是什么?

    我试图弄清楚如何使用 DWM 将窗口的副本渲染到我自己想要的位置 我唯一能找到的告诉 DWM 在某处渲染的方法是使用缩略图 API 但MSDN的DWM 缩略图概述他们特别警告我 NoteDWM 缩略图不允许开发人员创建类似的应用程序 Win