首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何获取无边框全屏wpf/uwp窗口的dwp缩略图

要获取无边框全屏 WPF/UWP 窗口的 DWM 缩略图,可以使用以下步骤:

  1. 首先,需要导入相关的命名空间:
    • 对于 WPF,需要导入System.Windows.InteropSystem.Runtime.InteropServices命名空间。
    • 对于 UWP,需要导入Windows.UI.CompositionWindows.Graphics.Imaging命名空间。
  • 使用 P/Invoke 方式调用 Windows API 函数 DwmRegisterThumbnail 注册 DWM 缩略图。该函数的签名如下(对于 WPF):
  • 使用 P/Invoke 方式调用 Windows API 函数 DwmRegisterThumbnail 注册 DWM 缩略图。该函数的签名如下(对于 WPF):
  • 创建一个用于显示缩略图的控件,例如 WPF 中的 Image 或 UWP 中的 SwapChainPanel
  • 获取目标窗口的句柄。在 WPF 中,可以使用 WindowInteropHelper 类的实例,调用其 Handle 属性获取句柄。在 UWP 中,可以使用 Window.Current.CoreWindowPointerPressedKeyDown 事件中获取当前窗口句柄。
  • 使用 DwmRegisterThumbnail 函数注册缩略图。传入目标窗口的句柄作为 src 参数,传入用于显示缩略图的控件句柄作为 dest 参数。
  • 使用 P/Invoke 方式调用 Windows API 函数 DwmUpdateThumbnailProperties 更新缩略图属性。该函数的签名如下:
  • 使用 P/Invoke 方式调用 Windows API 函数 DwmUpdateThumbnailProperties 更新缩略图属性。该函数的签名如下:
  • DWM_THUMBNAIL_PROPERTIES 是一个结构体,用于指定缩略图的属性,例如位置、大小等。
  • 最后,不要忘记在程序退出或不再需要缩略图时,调用 DwmUnregisterThumbnail 函数注销缩略图。

以上是获取无边框全屏 WPF/UWP 窗口的 DWM 缩略图的基本步骤。具体实现中,还需要根据具体需求进行调整和优化。

参考资料:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Windows 对全屏应用优化

这个拦截会出现比较多性能问题和不稳定问题 全屏独占窗口对于多个屏幕设备不够友好,如果使用 DWM 管理另一个屏幕,那么当另一个屏幕应用获取焦点又需要如何处理。...在 windows 几个版本里面的处理是在其他窗口获取焦点时候自动最小化全屏独占窗口,这样就让玩全屏独占应用小伙伴很难同时一边玩全屏游戏一边看电影 上文说到的如果是窗口模式,那么渲染此时由 DWM...,同时对无边框全屏窗口提供几乎同等性能优化,此时更多应用都选择使用无边框全屏窗口而不是全屏独占窗口 但如果是进行更多性能优化,可以考虑进入全屏独占窗口 如果是 WPF 程序,那么设置无边框然后设置窗口大小和屏幕一样大...更多关于 WPF 优化请看 从 DX 层面讲 WPF 渲染卡顿 注:有小伙伴对于独占全屏应用多屏幕处理觉得有点迷,我换句话告诉大家,请打开一个 UWP 视频应用,让他进入全屏。...在一些有趣设备上,不会给无边框全屏应用设置前台焦点,因为窗口没有焦点所以此时任务栏依然可以显示,解决方法请看 WPF窗口激活作为前台最上层窗口方法 更多博客 Windows桌面实现之七(DirectX

1.9K20

WPF 使用 WindowChrome,在自定义窗口标题栏同时最大程度保留原生窗口样式(类似 UWPChrome)

WPF 使用 WindowChrome,在自定义窗口标题栏同时最大程度保留原生窗口样式(类似 UWP/Chrome) 发布于 2018-07-12 07:57...▲ Chrome 普通窗口 ? ▲ Chrome 最大化窗口 为什么不做无边框窗口WPF 自定义窗口可是非常容易,完全自定义样式、异形都不在话下。...鼠标滑入划出动画效果如何窗口标题栏交互 标题栏上有右键菜单,如果自己模拟,基本上这个就要自己重新实现了。...第三方应用集成 第三方截图应用可以毫无障碍地捕捉到标准窗口外框范围,但如果我们没有模拟好(而是拿一个 WPF边框窗口模拟),那么第三方截图应用就截不准(可能会超出窗口本来大小)。...关于自绘标题栏按钮以模拟 UWP 原生按钮,可以阅读我另一篇文章(代码太长,还是分开了好):WPF 应用完全模拟 UWP 标题栏按钮。

6.5K20
  • dotnet 从入门到放弃 500 篇文章合集

    uwp 绑定 OneWay 无法使用 win10 uwp 绑定密码 win10 uwp 绑定静态属性 win10 uwp 自定义控件初始化 win10 uwp 获取指定文件 win10 uwp 获取按钮鼠标左键按下...win10 uwp 获取文件夹出错 win10 uwp 获得元素绝对坐标 win10 uwp 获得缩略图 win10 uwp 萤火虫效果 win10 uwp 让焦点在点击在页面空白处时回到textbox...WPF 写系统日志 WPF 判断调用方法堆栈 wpf 单例 WPF 只允许打开一个实例 WPF 可获得焦点属性 WPF 在 Alt+Tab 隐藏窗口 WPF 好看矢量图标 wpf 如何使用 Magick.NET...解决 xaml 设计显示异常 WPF 解决弹出模态窗口关闭后,主窗口不在最前 WPF 设置纯软件渲染 WPF 设置输入只能英文 WPF 调试 获得追踪输出 WPF 资源冻结 WPF 高性能笔 WPF...Q# 如何使用 Telegram 如何使用本模板搭建博客 如何入门 C++ AMP 教程 如何写毕业论文 表格 如何删除错误提交 git 大文件 如何UWP 使用 wpf Trigger 如何安装

    10.4K20

    WPF 使用 WindowChrome,在自定义窗口标题栏同时最大程度保留原生窗口样式(类似 UWPChrome)

    WPF 自定义窗口可是非常容易,完全自定义样式、异形都不在话下。...鼠标滑入划出动画效果如何窗口标题栏交互 标题栏上有右键菜单,如果自己模拟,基本上这个就要自己重新实现了。...第三方应用集成 第三方截图应用可以毫无障碍地捕捉到标准窗口外框范围,但如果我们没有模拟好(而是拿一个 WPF边框窗口模拟),那么第三方截图应用就截不准(可能会超出窗口本来大小)。...是个与 WPF 相关附加属性,与模拟窗口样式没有关系。...关于自绘标题栏按钮以模拟 UWP 原生按钮,可以阅读我另一篇文章(代码太长,还是分开了好):WPF 应用完全模拟 UWP 标题栏按钮。

    1.9K60

    Windows 窗口样式 什么是 WS_EX_NOREDIRECTIONBITMAP 样式

    用到这个功能最多UWP 应用,但是经过考古在 Win8 全屏应用也用到这个技术,在 win32 函数里面的 CreateWindowEx 方法创建窗口时候,可以通过传入 WS_EX_NOREDIRECTIONBITMAP...详细文档请看 Extended Window Styles (Winuser.h) - Win32 apps 如何才能说德熙不是在骗你?创建一个 UWP 应用,然后运行这个应用。...对于 UWP 应用实际窗口应该是 Windows.UI.Core.CoreWindow 窗口,右击属性切换到样式就可以看到 UWP 窗口设置样式就是 WS_EX_NOREDIRECTIONBITMAP...当然处理 UWP 之外,使用 WPF 也是可以做到,请看 WPF 使用 Composition API 做高性能渲染 当然这需要来聊下 DWM 是怎么工作,从大佬 Windows with C++...关于应用截图请看 win10 uwp 录制任意应用屏幕 本文只是和小伙伴吹这个技术,不会告诉大家实际上应该如何做。

    1.8K20

    WPF 使用 Microsoft.Toolkit.Wpf.UI.Controls InkCanvas 时加上背景色和按钮方法

    本文来告诉大家如何WPF 应用 HOST 了 UWP InkCanvas 控件时,给 InkCanvas 控件设置背景色,加上按钮等业务功能实现方法 在上一篇博客有告诉大家如何WPF 里面使用上...但是在 WPF 里面 HOST 了 UWP 控件方式,相当于将 UWP 作为一个窗口嵌入到 WPF 应用里面,这就意味着在 UWP 控件所在范围,不能使用 WPF 渲染,在此范围里面的元素都被...让 UWP 控件项目作为实际 UWP 自定义控件编写项目,咱将在 UWP 控件项目里面完成所有的自定义逻辑 如何创建项目和如何组织,还请参阅 官方文档 本文这里就不多说了 回到如何UWP ...以上代码放在 github 和 gitee 欢迎访问 可以通过如下方式获取本文源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文代码...盈利,不卖课,做纯粹技术博客

    2.2K20

    在 Windows 11 中处理 WindowChrome 圆角

    被裁剪过后自定义 Window 成了一个无边框圆角窗口,看着还挺时髦。...使用WindowChrome问题:介绍如何处理使用 WindowChrome 自定义 Window 会遇到各种问题。...WPF 制作高性能透明背景异形窗口(使用 WindowChrome 而不要使用 AllowsTransparency=True) 另外,关于圆角我要抱怨一下: 在 Windows 11 中,我们对窗口边框进行了圆角处理...微软文档这样声称,我是一个字都不信,难道这么多年来区区 Windows 直角就让我感觉到威慑和没有安全感了?微软还有比 UWP 更能让我没有安全感东西?...源码 我做了个小 Demo 用户看看这篇文章提到不同边框和 DWM_WINDOW_CORNER_PREFERENCE 设定下效果,源码可以从这里获取: https://github.com/DinoChan

    3K10

    【译】Visual Studio 2019 中 WPF & UWP XAML 开发工具新特性

    以前,此功能仅适用于通用 Windows 平台(UWP),但现在支持 WPF .NET Framework,WPF .NET Core 和 UWP 应用程序。...WPF Designer 现在完全适用于 WPF .NET Core 项目(v16.3) XAML 设计器缩放/位置现在默认为全部适合(v16.4): 根据客户反馈,我们重新评估了打开 XAML 窗口...在此版本中,受支持控件包括:边框,按钮,画布,复选框,组合框,网格,图像,标签,列表框,ListView,StackP anel,TextBlock,TextBox。...弹出 XAML 编辑器作为与设计器(v16.4)分开单独窗口 显示引用程序集资源(v16.4): XAML IntelliSense 已更新为支持显示来自 WPF Framework 和 WPF ....您还可以使用 Windows 应用程序打包项目为具有 Islands .NET Core 3 生成 MSIX。要了解如何入门,请访问我们文档。

    7.3K30

    WPF 制作高性能透明背景异形窗口(使用 WindowChrome 而不要使用 AllowsTransparency=True)

    如果不想自定义窗口样式,还需要设置 Background="Transparent"。这样设置会让窗口变成 Layered Window,WPF 在这种类型窗口渲染性能是非常糟糕。...本文介绍如何使用 WindowChrome 而不设置 AllowsTransparency="True" 制作背景透明异形窗口,这可以避免异形窗口导致低渲染性能。...如何实现 要实现这种背景透明异形窗口,需要为窗口设置以下三个属性: WindowStyle="None" ResizeMode="CanMinimize" 或 ResizeMode="NoResize...如果你有留意到我其他博客,你会发现我定制窗口样式时候都在极力避开设置此性能极差属性: WPF 使用 WindowChrome,在自定义窗口标题栏同时最大程度保留原生窗口样式(类似 UWP/Chrome...请参见:WPF 制作支持点击穿透高性能透明背景异形窗口

    1.6K20

    WPF 程序中应用 Windows 10 真•亚克力效果

    从 Windows 10 (1803) 开始,Win32 应用也可以有 API 来实现原生亚克力效果了。不过相比于 UWP 来说,可定制性会差很多。...本文介绍如何WPF 程序中应用 Windows 10 真•亚克力效果。(而不是一些流行项目里面自己绘制亚克力效果。)...我在另一篇博客中有介绍此 API 各种用法效果,详见: 使用 SetWindowCompositionAttribute 来控制程序窗口边框和背景(可以做 Acrylic 亚克力效果、模糊效果、主题色效果等...) - walterlv 当然,使用此 API 也可以做 Windows 10 早期模糊效果,比如: 在 Windows 10 上为 WPF 窗口添加模糊特效(就像开始菜单和操作中心那样) - walterlv...如何使用 为了方便地让你窗口获得亚克力效果,我做了两层不同 API: AcrylicBrush 当然,受到 Win32 启用亚克力效果限制,只能在窗口上设置此属性 WindowAccentCompositor

    48910

    什么是模态窗口?本文带你了解模态窗口本质

    Windows 系统设置因为让背景变暗了,所以用户肯定会看得到需要进行交互;而任务管理器没有让主界面变暗,所以用户在操作子界面的时候,模态窗口边框和标题栏闪烁以提醒用户注意。...关于 WPF 框架是如何实现模态窗口,可以阅读:直击本质:WPF 框架是如何实现模态窗口 关于如何自己实现一个跨越线程/进程边界模态窗口,可以阅读:实现 Windows 系统上跨进程/跨线程模态窗口...UWP新 API 当然已经都是使用 async/await 来实现模态等待了,不过 WPF/Windows Forms 比较早,只能使用 Dispatcher 线程模型来实现模态等待。...新开一个消息循环以阻塞当前代码同时继续响应 UI 交互 上面 Window.ShowDialog 本质也是在调用 Dispatcher.PushFrame,详见: 直击本质:WPF 框架是如何实现模态窗口...简单在 UI 上提醒是最简单了,比如: 将主界面变暗(UWP 应用,Web 应用喜欢这么做) 将主界面变模糊(iOS 应用喜欢这么做) 在模态窗口上增加一个很厚重阴影(Android 应用喜欢这么做

    1.3K30

    WPF 稳定全屏窗口方法

    本文来告诉大家在 WPF 中,设置窗口全屏一个稳定设置方法。在设置窗口全屏时候,经常遇到问题就是应用程序虽然设置最大化加无边框,但是此方式经常会有任务栏冒出来,或者说窗口没有贴屏幕边。...Win32 消息,在消息里面获取显示器信息,根据获取显示器信息来设置窗口尺寸和左上角值。...,可以根据自己业务决定 为了样式如何调用全屏方法,在窗口添加一个按钮,在点击按钮时,进入或退出全屏 <ToggleButton HorizontalAlignment="Center" VerticalAlignment...为此,设置两个附加属性,用来分别记录窗口全屏前位置和样式附加属性,在进入全屏窗口方法尝试获取窗口信息设置到附加属性 /// /// 用于记录窗口全屏前位置附加属性...盈利,不卖课,做纯粹技术博客

    4.9K20

    WPF 很少人知道科技

    这使得你可能已经不知道如何在 C# 代码中创建同样内容。 比如在代码中创建 DataTemplate,主要会使用到 FrameworkElementFactory 类型。...COM 组件 PimcManager 获取,在禁用实时触摸后会启用系统 TOUCH 消息获取到,如果开启了 Pointer 消息那么会使用 POINTER 消息。...我们可以继承自 TouchDevice 来模拟触摸,详见: WPF 模拟触摸设备 模拟 UWP 界面 在现有的 Windowing API 下,系统中看起来非常接近系统级窗口样式可能都是用不同技术模拟实现...如果要将 WPF 模拟得很像 UWP,可以参考我这两篇博客: WPF 使用 WindowChrome,在自定义窗口标题栏同时最大程度保留原生窗口样式(类似 UWP/Chrome) WPF 应用完全模拟...在 Windows 10 上为 WPF 窗口添加模糊特效 然而充分利用 Fluent Design 高性能,需要上 XAML Islands,详见: [Using the UWP XAML hosting

    28920

    WPF 获取元素(Visual)相对于屏幕设备缩放比例,可用于清晰显示图片

    如下图,我画了一个屏幕,屏幕里面有一个 WPF 窗口WPF 窗口里面有一个或者多个 ViewBox 或者设置了 RenderTransform 这样缩放控件,一层层嵌套下有我们最终控件。...于是,我们控件如何得知此时相比于屏幕像素缩放比呢?换句话说,如何得知此时此控件显示占了多少个屏幕像素宽高呢?...分别计算所有的缩放 从上面的图中,我们可以得知,有两种不同种类缩放: 屏幕到 WPF 窗口缩放 WPF 窗口内部缩放 屏幕到 WPF 窗口缩放 我们知道 WPF 单位叫做 DIP 设备无关单位...不过,我更希望引入 UWP有效像素单位。实际上 WPFUWP 像素单位含义是一样,只是 WPF 使用了一个画饼式叫法,而 UWP叫法就显得现实得多。...支持 Windows 10 最新 PerMonitorV2 特性 WPF 多屏高 DPI 应用开发 WPF 窗口内部缩放 WPF 窗口内部缩放,肯定不会是一层层自己去叠加。

    65940

    WindowsXamlHost:在 WPF 中使用 UWP 控件(Windows Community Toolkit)

    最终效果 当将程序跑起来之后,你就能看到 WPF 窗口 UWP 控件了。 ?...控件是一个新 HwndSource,这相当于 UWP 控件是通过子窗口形式与 WPF 窗口放在一起 于是,只能指定一个矩形区域完全属于 UWP,在这个区域 WPF 控件无法与其获得交互或渲染叠加...关于 DPI 适配 为了让 UWP 控件能够在 WPF 窗口中获得正确 Per-Monitor DPI 适配效果,你需要设置为 PerMonitorV2 DPI 感知级别。...关于如何WPF 下开启 PerMonitorV2 级别的 DPI 感知可以参见: 支持 Windows 10 最新 PerMonitorV2 特性 WPF 多屏高 DPI 应用开发 - walterlv...更复杂 UWP 控件嵌入 如果希望将更多 WPF 窗口 UI 部分交给 UWP 来做,那么就不能只是仅仅初始化一个 Button 就完了。

    4.7K20

    WPF 使用 Composition API 做高性能渲染

    在 CompositionHost 创建了一个新窗口,然后将这个窗口使用 HwndHost 显示在 WPF 窗口之上,也就是使用 CompositionHost 控件将会显示在其他任何 WPF 控件上面...这和在 WPF 中使用其他渲染方法窗口一样,这个技术也是在 WPF 中使用 WinForms 或 UWP 控件技术 在 CompositionHost 主要代码是 InitComposition...用户控件 在 CompositionHostControl 这个用户控件,使用封装 Visual Layer 在里面的代码和 UWP 相同 如何使用可以看 UWP Visual Layer...,简单告诉大家如何添加 Visual 和动画 最后一个文件是主窗口,里面也就是放了一个按钮和 CompositionHostControl 代码很简单 不足 虽然可以在 WPF 用 Composition...因为使用了 HwndHost 用了两个渲染方法,在使用 UWP 渲染方法范围会在窗口最上也就是 WPF 无法在这个范围放任何像素,同时也存在焦点等问题。

    2K20

    UWPWPF 对比

    但是如果需要性能和支持好触摸,建议选择 UWP ,不过 UWP 坑还是好多。 输入 虽然微软说 WPF 是支持触摸,但是在 4.7 之前触摸是很差。所以 WPF 支持鼠标键盘。...那么 DWM 作用是什么,实际上从博客可以看到 DWM 实际作用 Windows 组合引擎或合成程序,需要每个窗口把显示内容给屏外表面或缓冲区,缓冲区是系统给每个顶层窗口分配,所有的 GDI、D3D...然后 DWM 决定如何显示,是组合窗口还是做特效,最后再把缓存放到显卡。 参见:Why use DirectComposition?...如何WPF 使用 dx 是相对比较难,但是可以使用 SharpDx 和 SharpGL 使用 dx 和 opg。...样式 虽然看起来 WPFUWP 样式定义是一样,但是 UWP 没有了功能很好 Trigger 和样式继承。这样 UWP 功能就没有 WPF 那么容易定制。

    14.6K20

    页面彈出各种窗口詳解

    ; 二、 弹启一个全屏窗口 加入fullscreen <!...,在于showModalDialog()打开窗口(简称模式窗口),置在父窗口上,必须关闭才能访问父窗口(建议尽量少用,以免招人反感);showModelessDialog()(简称模式窗口),打开后不必关闭也可访问父窗口打开窗口...八、 让弹出窗口适应里面图片大小 很多时候我们需要提供这样功能给访问者:当访问者点击页面中缩略图时,其对应全尺寸图片将显示在一个新弹出窗口中供访问者查看。   ...">   其中标记href属性指定全尺寸图片URL,target属性设置为_blank指定在新窗口中显示该图片;标记src属性指定缩略图...(比如都是400x350),那么以上代码适用于所有的缩略图片链接(只是href属性指向全尺寸图片文件不同)。

    2.6K21

    UWPWPF 对比

    但是如果需要性能和支持好触摸,建议选择 UWP ,不过 UWP 坑还是好多。 输入 虽然微软说 WPF 是支持触摸,但是在 4.7 之前触摸是很差。所以 WPF 支持鼠标键盘。...那么 DWM 作用是什么,实际上从博客可以看到 DWM 实际作用 Windows 组合引擎或合成程序,需要每个窗口把显示内容给屏外表面或缓冲区,缓冲区是系统给每个顶层窗口分配,所有的 GDI、D3D...然后 DWM 决定如何显示,是组合窗口还是做特效,最后再把缓存放到显卡。 参见:Why use DirectComposition?...如何WPF 使用 dx 是相对比较难,但是可以使用 SharpDx 和 SharpGL 使用 dx 和 opg。...样式 虽然看起来 WPFUWP 样式定义是一样,但是 UWP 没有了功能很好 Trigger 和样式继承。这样 UWP 功能就没有 WPF 那么容易定制。

    5.4K20
    领券