Windows 8.1 ストアアプリのスクリーンショット防止
#win8 dev_jp
Windows 8.1 でもアプリケーションのスクリーンショットを取ることができます。簡単な方法は、Print Screen キーを押すだけ。クリップボードに保存されるのであとは自由に使える。Win + PrintScreen キーならファイルに保存までしてくれる。さらにストアアプリの共有を使うとスクリーンショットを送信することができます。
… が、書籍のような表示しているコンテンツに価値があるもの、にとってはこれは脅威です。
Windows 8.1 のストアアプリの WinRT APIにはこれを防止するAPIがあります。
applicationView.isScreenCaptureEnabled = false;
ページのコンストラクタでこれを宣言すれば、このページのスクリーンショットを取れなくなります。
ちなみに、アプリ内で PrintScreen キーをフックする方法なども考えたことがありますが、KeyUp でフックできるものの、KeyDown の時点でもうスクリーンショットは撮られてれているので、KeyUp でフックしたらすぐにクリップボードに別のものを書きこむ、という手法が考えられます。しかし、クリップボードを監視して自動保存するようなユーティリティアが動いていたら厳しいですね。
なので上記の方法を使いましょう。