如何在我的 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/