これが適切である場合、フックを使用せずにコンピュータを完全にロックダウンする簡単な方法は、次のようにすることです。
まず、Form_LostFocusイベントハンドラーを作成します。これは[プロパティ]->[イベント]ウィンドウにはないため、プログラムで追加する必要があります。
this.LostFocus += new ...
これは、fromがフォーカスを失ったときに呼び出されるため、ここではフォームにフォーカスを戻す必要があります。
this.Focus();
this.Activate();
この方法は、フォームのコントロールにフォーカスが与えられた場合に最適に機能します。
textBox1.Focus();
次に、100ms間隔でタイマーを追加し、有効にします。このタイマーは、フォームにフォーカスがあるかどうかをチェックし、ない場合はフォーカスを与えます。
// in the Tick Eventhandler
if (!this.Focused)
this.Focus();
これにより、ユーザーが何をしようとしても、タスクマネージャーを開いた場合でも、プログラムが常にフォーカスを奪うことが効果的に保証されます。
次に、プログラムをフルスクリーンにします。「TopMost」プロパティをtrueに設定します。「WindowState」を「maximized」に設定します。「FormBorderStyle」を「None」に設定します。
最後に、Form_ClosingEventhandlerを処理します。
// Global boolean value - set this to true when
// the user has completed the set tasks
boolean complete = false;
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (!complete)
e.cancel = true;
}
注意:一般的に、フォーカスを盗むことは非常に悪い習慣です。