c# - 在 WPF 中运行我的应用程序时如何禁用 "PRINT SCREEN"按钮?

标签 c# wpf printscreen

如何在我的 WPF 应用程序运行时禁用打印屏幕功能?

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

最佳答案

好吧,如果您的应用程序部署在用户无法使用相机的环境中,这是可能的,而且确实很有用。

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

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

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

HwndSource source = HwndSource.FromHwnd(<handle>);
source.AddHook(<WndProc>);

如上所述制作句柄,并自己实现 WndProc。

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

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


如@ghord 评论

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

关于c# - 在 WPF 中运行我的应用程序时如何禁用 "PRINT SCREEN"按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3889816/

相关文章:

c# - Windows 窗体/WPF 太大,我该如何拆分?

screenshot - 如何在全屏模式下拍摄命令提示符窗口的快照

html - 内容宽度在打印屏幕中不起作用

c# - 通过 VS 2010 中的多个项目级联 native dll 资源的副本

c# - 从用户控件/类/页面访问母版页公共(public)方法

WPF:没有文本时将 TextBlock 高度设置为 0

c# - 按 PrintScreen 后创建图像文件

c# - 具有许多通知的 .NET SqlDependency 与高速率轮询?

c# - 使用服务依赖注入(inject)实例化 MyViewModel 时出现 NullReferenceException

c# - 按钮没有正确的签名xamarin