そこで、ホスト コンピューターをロックするプログラムを作成しようとしています。これまでのところ、パスワードを作成できるメインフォームがあり、コンピューターをロックできます。パスワードが作成されると、MD5 のユーザーの AppData 内の場所に保存されます。
パスワードの作成とビットのチェックは問題なく完了しましたが、ロックを希望どおりに機能させる方法がわかりません。通常、これが実行されるコンピューターは Windows (つまり、WinKey+L) を介してロックされますが、常に実行される別のプログラムを監視する必要が生じました。ただし、これらのコンピューターは公共の場所にある場合があるため、ユーザーの身元が確認された後にのみ入力へのアクセスを許可する方法を探しています。
プログラムが正常に終了するのを防ぐことはできますが、GUI の境界外でクリックやキーストロークを検出するのは少し問題があります。Deactivate イベントを処理しようとしましたが、それで発生したクリックをキャンセルできないため、うまくいきません。MouseMove も使用してみましたが、マウスがフォームの境界内で移動したときにのみイベントが発生することに気付きました。Leave イベントもリッスンしようとしましたが、これもうまくいきませんでした。
キーストロークについては、KeyPress イベントの引数を確認してe.KeyChar != '\t' && e.KeyChar != '\r'
(Enter キーは \r でしょうか?)、イベントをキャンセルしてみましe.Handled = true;
た。いずれにせよ、Alt-Tab は引き続き使用できます。
また、キーストローク チェックの問題については、代わりに Deactivate チェックを使用して、FormClosing も処理できることに気付きました。ただし、Deactivate イベント ハンドラーも機能しません。含まれているコードは次のとおりです。
this.BringToFront();
this.Focus();
この時点で、キーストロークと非アクティブ化ハンドラーに対して行っていることは小さなエラーであると確信していますが、クリックの問題に対して何をすべきかわかりません。どんな助けでも大歓迎です。