8

WPFアプリケーションの実行中にPrintScreen機能を無効にするにはどうすればよいですか?

ユースケースは、私のクライアントが外界からの貴重な患者中心のデータの不必要な複製を避けたいと望んでおり、それらは人々が非デジタル手段を介してデータを取得することを防ぐための物理的セキュリティを提供します。

4

8 に答える 8

5

さて、それは可能であり、ユーザーがカメラを利用できない環境にアプリケーションがデプロイされている場合は、実際に役立つ可能性があります。

まず、RegisterHotKeyおよびUnregisterHotKey API呼び出しを使用しました。これは、このかなり古い記事http://msdn.microsoft.com/en-で説明されているように、 http://pinvoke.net/default.aspx/user32.RegisterHotKeyに記載されています。 us/magazine/cc163713.aspx

イベントにIDHOT_SNAPDESKTOPホットキーを登録し、で登録を解除しました。コンストラクターでこれを実行しようとすると、メソッドで一貫したハンドルを取得する際に問題が発生しました。Window_LoadWindow_ClosedWindowInteropHelper(this)

キーを無視する以上のことをしたい場合は、Windowsメッセージハンドラーを設定して、次を使用して一種のWndProcを作成できます。

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

上記のようにハンドルを作成し、WndProcを自分で実装します。

まだ、ホットキーを「処理しない」方法と、もちろんホットキーの登録を解除する以外の方法でWindowsに通常の動作を実行させる方法がわかりません。

あまりエレガントでも「WPF」でもありませんが、私にとってはうまくいきました。


@ghordのコメントとして

の使用はEnsureHandle()、コンストラクターでハンドラーを取得するのに役立ちます。

于 2011-03-14T17:23:33.913 に答える
4

印刷を無効にすることはできません。可能であったとしても、携帯電話のカメラで簡単に回避できます。多くはメガピクセルの解像度範囲にあり、誰かが必要な情報を簡単に入手できるようになっています。

Print Screenキーボードのキーを無効にしたい場合、 Jodrellの答えはそれを行う方法を提供します(それは人々が印刷するのを妨げることはなく、決心したユーザーはそれを回避する方法を見つけるだろうと理解しています)。

本当に、それはすべて信頼に帰着します。雇用主が、ほとんどの法域(米国のHIPAA)ですでに法律で保護されているデータを削除しないように従業員を信頼できない場合、より大きな問題が発生します。

于 2010-10-08T10:58:34.703 に答える
2

簡単:

Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().IsScreenCaptureEnabled = false;
于 2017-05-02T09:24:06.450 に答える
0

簡単に言えば、できません。「Printscreen」は、画面上のピクセルをクリップボードにコピーするだけであり、アプリケーションの一部ではありません。

于 2010-10-08T11:03:27.260 に答える
0

私が考えることができる唯一の方法は、ネイティブのWindows API(SetWindowsHookEx)を使用して、すべてのキーストロークをキャッチし、PrintScreenキーをフィルターで除外することです。ただし、これには、実際にキーストローク処理を実行するためのネイティブ(つまり、管理されていない)DLLの作成が含まれます。

于 2010-10-08T11:17:05.727 に答える
0

基本的に、ClipBoardイベントにフックして、誰かがそれを行う場合は、コピーされた画像をnullに設定できます。したがって、画像をコピーすることはできますが、リセットされます。

これを見てください:

クリップボードイベントC#

または、タイマーでクリップボードの内容を確認し、画像に設定されたらすぐにクリアします。

于 2010-10-08T11:42:23.473 に答える
0

いいえ、それを行う方法はありません。アプリケーションでPrintScreenキーをキャプチャした場合でも、ユーザーは他のアプリケーションにフォーカスを設定してから、Print Screenを実行する可能性があります(アプリケーションを横に置くなど)。

唯一の方法は、キーボードフックを使用してすべてのキーストロークをキャプチャし、Print Screenをフィルタリングするダミーアプリケーションをバックグラウンドで作成することですが、それはあなただけでなくすべてのアプリケーションで発生します。さらに、ジョージが言ったように、ユーザーは携帯電話のカメラも使用できます!

于 2010-10-08T11:44:54.870 に答える
0

Microsoft RightsManagementSystemが役立つと思います。試してみる。リンクは次のとおりです。

マイクロソフトの権利管理システム

于 2010-10-08T11:50:57.960 に答える