如何使用 DWMWA_FREEZE_REPRESENTATION 冻结实时缩略图?
How do I freeze a live thumbnail using DWMWA_FREEZE_REPRESENTATION?
我成功地将另一个 windows 的内容(现在在我的测试用例中,记事本)投影到我自己的 window 中。效果很好。
我没能做到的是冻结它,正如 API 使用 DwmSetWindowAttribute
(here) with the parameter DWMWA_FREEZE_REPRESENTATION
(here) 提供的那样,根据互联网等于 15。
dwmSetWindowAttribute(MyWindow,15,@Value,1)
我几乎尝试了所有变体。发送 1 个字节,发送 4 个字节,值 1、0、"maxdword" 等等。return 值始终是 -2147024809
,除非我弄错了 - 意味着 "Invalid Parameter".
由于 BitBlt 的速度较慢,无法通过获取我正在投影的 window 的 DC 来使用变通方法。在寻找可合理快速实施的替代方案后,我偶然发现了 dwm 缩略图。
在互联网上搜索 DWMWA_FREEZE_REPRESENTATION
并没有给我任何有用的信息,就好像没有其他人尝试使用它一样。我想我的问题很快就会成为 google.
上的第一搜索结果
运行 Windows 10 月更新。
我怎样才能让它工作?
第三个和第四个参数实际上是BOOL*
和sizeof(BOOL)
,但第一个参数需要是一个UWP window。 DWMWA_FREEZE_REPRESENTATION
仅适用于文档中未提及的 UWP windows。
我成功地将另一个 windows 的内容(现在在我的测试用例中,记事本)投影到我自己的 window 中。效果很好。
我没能做到的是冻结它,正如 API 使用 DwmSetWindowAttribute
(here) with the parameter DWMWA_FREEZE_REPRESENTATION
(here) 提供的那样,根据互联网等于 15。
dwmSetWindowAttribute(MyWindow,15,@Value,1)
我几乎尝试了所有变体。发送 1 个字节,发送 4 个字节,值 1、0、"maxdword" 等等。return 值始终是 -2147024809
,除非我弄错了 - 意味着 "Invalid Parameter".
由于 BitBlt 的速度较慢,无法通过获取我正在投影的 window 的 DC 来使用变通方法。在寻找可合理快速实施的替代方案后,我偶然发现了 dwm 缩略图。
在互联网上搜索 DWMWA_FREEZE_REPRESENTATION
并没有给我任何有用的信息,就好像没有其他人尝试使用它一样。我想我的问题很快就会成为 google.
运行 Windows 10 月更新。
我怎样才能让它工作?
第三个和第四个参数实际上是BOOL*
和sizeof(BOOL)
,但第一个参数需要是一个UWP window。 DWMWA_FREEZE_REPRESENTATION
仅适用于文档中未提及的 UWP windows。