热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#学习教程:如何在WPF中运行我的应用程序时禁用“PRINTSCREEN”按钮?分享

如何在WPF中运行我的应用程序时禁用“PRINTSCREEN”按钮?如何在WPF应用程序运行时禁用“打印屏幕”function?用例是我的客户希望避免不必要地复制来自外部世界的有价

如何在WPF中运行我的应用程序时禁用“PRINT SCREEN”按钮?

如何在WPF应用程序运行时禁用“打印屏幕”function?

用例是我的客户希望避免不必要地复制来自外部世界的有价值的以患者为中心的数据,并且它们提供物理安全性以防止人们通过非数字手段获取数据。

禁止打印是不可能的,即使有可能,手机相机也很容易避开打印 。 许多都在百万像素分辨率范围内,这使得某人很容易获得他们想要的信息。

如果你想在你的键盘上禁用Print Screen Key, Jodrell的答案就会提供一种方法 (理解它不会阻止人们进行打印,并且一个坚定的用户会找到解决方法)。

真的,这一切都归结为信任。 如果雇主不能相信他们的员工不会删除大多数司法管辖区已经受到法律保护的数据(美国的HIPAA),那么就会有一个更大的问题。

好的,如果您的应用程序部署在用户无法使用摄像头的环境中,那么它是可能的,而且确实很有用。

首先,我使用了RegisterHotKey和UnregisterHotKey API调用,这里记录了http://pinvoke.net/default.aspx/user32.RegisterHotKey ,如这篇相当古老的文章所述http://msdn.microsoft.com/en-我们/ magazine / cc163713.aspx 。

我在Window_Load事件中注册了IDHOT_SNAPDESKTOP热键,并在Window_Load中注销了它。 尝试在构造函数中执行此操作使我WindowInteropHelper(this)使用WindowInteropHelper(this)方法获得一致的句柄。

如果你想做的不仅仅是忽略键,你可以设置一个Windows消息处理程序,使用一种WndProc,

 HwndSource source = HwndSource.FromHwnd(); source.AddHook(); 

如上所述制作句柄,以及自己的WndProc实现。

到目前为止,我还不知道如何“不”处理热键并让Windows执行其正常行为,当然,除非注销热键。

它不是很优雅或“WPF”,但它对我有用。


正如@ghord评论

EnsureHandle()使用对于在构造函数中获取处理程序看起来很有用。

简单:

 Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().IsScreenCaptureEnabled = false; 

简单地说,你不能。 “打印屏幕”只是将屏幕上的像素复制到剪贴板,而不是应用程序的一部分。

基本上你可以挂钩到ClipBoard事件,然后将图像复制为null,如果有人这样做的话。 所以他们可以复制图像,但它会被重置:

看看这个:

剪贴板事件C#

或者在计时器中,检查剪贴板的内容,并在设置为图片后立即将其清除。

不,没办法那样做。 即使您在应用程序中捕获“打印屏幕”键,用户也可能将焦点设置为其他应用程序,然后执行“打印”屏幕(将应用程序放在一边等)。

唯一的方法是在后台创建一个虚拟应用程序,使用键盘钩子和filter打印屏幕捕获所有击键,但这将发生在所有应用程序而不仅仅是你的。 而且乔治说用户也可以使用手机相机!

我认为Microsoft Rights Management System可以提供帮助。 试试看。 以下是链接:

微软权利管理系统

我能想到的唯一方法是使用本机Windows API(SetWindowsHookEx)来捕获所有击键并过滤掉PrintScreen键。 然而,这将涉及创建本机(即非托管)DLL以实际执行击键处理。

上述就是C#学习教程:如何在WPF中运行我的应用程序时禁用“PRINT SCREEN”按钮?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—编程笔记


推荐阅读
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 本文详细介绍了如何在Unity中实现一个简单的广告牌着色器,帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • Node.js 教程第五讲:深入解析 EventEmitter(事件监听与发射机制)
    本文将深入探讨 Node.js 中的 EventEmitter 模块,详细介绍其在事件监听与发射机制中的应用。内容涵盖事件驱动的基本概念、如何在 Node.js 中注册和触发自定义事件,以及 EventEmitter 的核心 API 和使用方法。通过本教程,读者将能够全面理解并熟练运用 EventEmitter 进行高效的事件处理。 ... [详细]
  • STM32串口通信:完整指南
    众所周知,串口通信是MCU最基本的通信方式,对于STM32来说也是如此。本文重点讲述STM32单片机的串口通信,主要包括的内容是:通信基础知识、串口通信原理、USART有关寄存器和 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • JUC(三):深入解析AQS
    本文详细介绍了Java并发工具包中的核心类AQS(AbstractQueuedSynchronizer),包括其基本概念、数据结构、源码分析及核心方法的实现。 ... [详细]
  • 本文对比了杜甫《喜晴》的两种英文翻译版本:a. Pleased with Sunny Weather 和 b. Rejoicing in Clearing Weather。a 版由 alexcwlin 翻译并经 Adam Lam 编辑,b 版则由哈佛大学的宇文所安教授 (Prof. Stephen Owen) 翻译。 ... [详细]
author-avatar
傻瑶叫一下来人fd_478
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有