WPFアプリケーションの実行中にPrintScreen機能を無効にするにはどうすればよいですか?
ユースケースは、私のクライアントが外界からの貴重な患者中心のデータの不必要な複製を避けたいと望んでおり、それらは人々が非デジタル手段を介してデータを取得することを防ぐための物理的セキュリティを提供します。
WPFアプリケーションの実行中にPrintScreen機能を無効にするにはどうすればよいですか?
ユースケースは、私のクライアントが外界からの貴重な患者中心のデータの不必要な複製を避けたいと望んでおり、それらは人々が非デジタル手段を介してデータを取得することを防ぐための物理的セキュリティを提供します。
さて、それは可能であり、ユーザーがカメラを利用できない環境にアプリケーションがデプロイされている場合は、実際に役立つ可能性があります。
まず、RegisterHotKeyおよびUnregisterHotKey API呼び出しを使用しました。これは、このかなり古い記事http://msdn.microsoft.com/en-で説明されているように、 http://pinvoke.net/default.aspx/user32.RegisterHotKeyに記載されています。 us/magazine/cc163713.aspx。
イベントにIDHOT_SNAPDESKTOP
ホットキーを登録し、で登録を解除しました。コンストラクターでこれを実行しようとすると、メソッドで一貫したハンドルを取得する際に問題が発生しました。Window_Load
Window_Closed
WindowInteropHelper(this)
キーを無視する以上のことをしたい場合は、Windowsメッセージハンドラーを設定して、次を使用して一種のWndProcを作成できます。
HwndSource source = HwndSource.FromHwnd(<handle>);
source.AddHook(<WndProc>);
上記のようにハンドルを作成し、WndProcを自分で実装します。
まだ、ホットキーを「処理しない」方法と、もちろんホットキーの登録を解除する以外の方法でWindowsに通常の動作を実行させる方法がわかりません。
あまりエレガントでも「WPF」でもありませんが、私にとってはうまくいきました。
@ghordのコメントとして
の使用はEnsureHandle()
、コンストラクターでハンドラーを取得するのに役立ちます。
印刷を無効にすることはできません。可能であったとしても、携帯電話のカメラで簡単に回避できます。多くはメガピクセルの解像度範囲にあり、誰かが必要な情報を簡単に入手できるようになっています。
Print Screen
キーボードのキーを無効にしたい場合、 Jodrellの答えはそれを行う方法を提供します(それは人々が印刷するのを妨げることはなく、決心したユーザーはそれを回避する方法を見つけるだろうと理解しています)。
本当に、それはすべて信頼に帰着します。雇用主が、ほとんどの法域(米国のHIPAA)ですでに法律で保護されているデータを削除しないように従業員を信頼できない場合、より大きな問題が発生します。
簡単:
Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().IsScreenCaptureEnabled = false;
簡単に言えば、できません。「Printscreen」は、画面上のピクセルをクリップボードにコピーするだけであり、アプリケーションの一部ではありません。
私が考えることができる唯一の方法は、ネイティブのWindows API(SetWindowsHookEx)を使用して、すべてのキーストロークをキャッチし、PrintScreenキーをフィルターで除外することです。ただし、これには、実際にキーストローク処理を実行するためのネイティブ(つまり、管理されていない)DLLの作成が含まれます。
基本的に、ClipBoardイベントにフックして、誰かがそれを行う場合は、コピーされた画像をnullに設定できます。したがって、画像をコピーすることはできますが、リセットされます。
これを見てください:
または、タイマーでクリップボードの内容を確認し、画像に設定されたらすぐにクリアします。
いいえ、それを行う方法はありません。アプリケーションでPrintScreenキーをキャプチャした場合でも、ユーザーは他のアプリケーションにフォーカスを設定してから、Print Screenを実行する可能性があります(アプリケーションを横に置くなど)。
唯一の方法は、キーボードフックを使用してすべてのキーストロークをキャプチャし、Print Screenをフィルタリングするダミーアプリケーションをバックグラウンドで作成することですが、それはあなただけでなくすべてのアプリケーションで発生します。さらに、ジョージが言ったように、ユーザーは携帯電話のカメラも使用できます!
Microsoft RightsManagementSystemが役立つと思います。試してみる。リンクは次のとおりです。