当前位置: 首页 > news >正文

【Windows 10 应用开发】如何防止应用程序被截屏

今天老周只想跟大伙们分享一个小技巧,是的,小小的技巧,很简单,保证你能学会的,要是学不会,可以考虑跳泰山。

有些时候,我们可能会想到不要让应用程序界面上显示的内容被截屏,要阻止应用界面呈现在截图上,可以在 ApplicationView 类上找答案,因为这个行为是跟应用程序视图有直接关系的。

我们只需要设置一个属性就成了——IsScreenCaptureEnabled,如果允许程序被捕捉到,就设置为 true,要禁止被捕捉,设置为 false 就好了。简单吧。

 

看一个例子,先看XAML布局。

        <Grid Margin="15">
            <Grid.RowDefinitions>
                <RowDefinition Height="auto"/>
                <RowDefinition/>
                <RowDefinition Height="auto"/>
            </Grid.RowDefinitions>
            <TextBlock Text="中国高富帅的形象代表" FontSize="25" HorizontalAlignment="Center" Margin="0,6"/>
            <Image Grid.Row="1" Margin="3" Source="Assets\1.png" />
            <CheckBox Grid.Row="2" Margin="0,8" Content="禁止被截屏" FontSize="18" HorizontalAlignment="Center" Checked="OnChecked" Unchecked="OnUnChecked"/>
        </Grid>

重点是 CheckBox 控件,我处理了它的 Checked 和 UnChecked 事件,如果它被选中,就禁止应用界面被捕捉;如果没选中,就允许捕捉。

下面是实现代码。

        ApplicationView appView = ApplicationView.GetForCurrentView();
        private void OnChecked(object sender, RoutedEventArgs e)
        {
            appView.IsScreenCaptureEnabled = false;
        }

        private void OnUnChecked(object sender, RoutedEventArgs e)
        {
            appView.IsScreenCaptureEnabled = true;
        }

 

来,看看效果。首先,CheckBox 是没选中的,即允许截屏,这时候截取到的超清无水印图片如下。

 

然后,我们选上 CheckBox 控件,再截屏,得到的是一片黑乎乎的东西。

 

这个示例很简单,我就不提供源代码了,大家完全可以自己动手的。

 

相关文章:

  • gradle.org
  • c# 可空类型
  • jQuery的选择器总结
  • 流程管理软件示例:构建闭环的隐患管理
  • dubbo请求调用过程分析
  • AC日记——魔法森林 洛谷 P2387
  • Nginx/LVS/HAProxy负载均衡软件的优缺点详解
  • WebRTC学习资料大全
  • 分布式文件系统 IPFS
  • 第一章、shell脚本基础
  • JAVASE学习笔记:第十章 SWing经常使用控件类(二)
  • DDD中分层架构
  • ssl证书生成方法
  • 谈选择的重要性
  • centos7安装设置Nfs服务器
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 《Java编程思想》读书笔记-对象导论
  • DOM的那些事
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Linux后台研发超实用命令总结
  • npx命令介绍
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • REST架构的思考
  • Spring核心 Bean的高级装配
  • 从零开始的无人驾驶 1
  • 工作中总结前端开发流程--vue项目
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • $.ajax()参数及用法
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (TOJ2804)Even? Odd?
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (汇总)os模块以及shutil模块对文件的操作
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (接口自动化)Python3操作MySQL数据库
  • (离散数学)逻辑连接词
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • ***利用Ms05002溢出找“肉鸡
  • **CI中自动类加载的用法总结
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET 读取 JSON格式的数据
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .NET简谈设计模式之(单件模式)
  • .net实现客户区延伸至至非客户区
  • .stream().map与.stream().flatMap的使用
  • :如何用SQL脚本保存存储过程返回的结果集
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @Documented注解的作用
  • @ModelAttribute使用详解
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?