You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UWP应用中如何编程阻止Windows屏幕共享时捕获系统通知?

在UWP屏幕共享中阻止系统通知被捕获的方案

核心实现思路

UWP原生屏幕捕获框架没有直接屏蔽系统通知的专属API,但可以通过两种实用方式达成隐私保护需求:

方法一:通过捕获区域规避通知显示区

Windows系统通知默认固定在屏幕右下角(任务栏通知区域上方),你可以通过限定捕获范围避开该区域:

  • 获取当前主屏的分辨率与DPI信息,计算出通知区域的大致范围(通常为屏幕右侧300-350px宽度、从顶部向下约100px起的区域)
  • 调用屏幕捕获API时,指定排除该区域的矩形范围,而非捕获全屏
  • 示例代码片段:
// 获取当前屏幕的原始像素尺寸
var displayInfo = DisplayInformation.GetForCurrentView();
var screenWidth = displayInfo.ScreenWidthInRawPixels;
var screenHeight = displayInfo.ScreenHeightInRawPixels;

// 定义排除通知区域后的捕获矩形(示例:右侧预留320px宽度给通知)
var captureArea = new Rect(0, 0, screenWidth - 320, screenHeight);

// 绑定捕获区域到屏幕捕获源
var screenCaptureSource = new ScreenCaptureSource();
screenCaptureSource.CaptureRegion = captureArea;

方法二:临时禁用系统Toast通知

通过Windows Runtime的Toast通知管理API,在共享期间临时关闭所有系统通知,结束后恢复原有设置:

  • 先保存用户当前的通知配置,再将全局通知设置改为禁用
  • 共享结束后立即恢复原配置,避免影响用户日常使用
  • 示例代码片段:
// 保存用户原有的通知设置
var originalNotificationSetting = ToastNotificationManagerCompat.Configuration;

// 临时禁用所有Toast通知
ToastNotificationManagerCompat.Configuration = NotificationSetting.Disabled;

// 屏幕共享结束后,恢复用户原有的通知设置
ToastNotificationManagerCompat.Configuration = originalNotificationSetting;

注意事项

  • 方法一需兼容不同屏幕分辨率、DPI及用户自定义通知位置的场景,建议提供手动调整捕获区域的入口
  • 方法二会禁用所有应用的Toast通知,需在共享启动前明确告知用户,避免引发误解
  • 若需更精准控制,可结合Windows辅助功能API监听通知弹出事件,动态调整捕获区域

内容的提问来源于stack exchange,提问作者Karthik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 19:25:56