1

Windows フォームでユーザーが x ボタンをクリックしたイベントをキャンセルできることはわかっていますが、タスク マネージャーがそれを閉じることができないようにしたいと考えています。私はこれをウェブ上で見つけていませんが、それを行う方法があると確信しています。

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if(e.CloseReason == CloseReason.TaskManagerClosing)
    {
        e.Cancel = true;

    }
}
4

1 に答える 1

2

ここにはいくつかのシナリオがあります。

  1. [プロセス] タブから [プロセスの終了] を実行して、アプリケーションを強制終了します。この場合、どうすることもできません。

  2. [アプリケーション] タブから [タスクの終了] を実行します。メイン フォームの終了イベントを処理し、このコードを記述することで、これをインターセプトできます。クローズの理由について詳しくは、こちらをご覧ください。

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (e.CloseReason == CloseReason.TaskManagerClosing)
        {
    
        }
    }
    

ただし、ユーザーがアプリケーションの実行を停止できないようにしたい場合は、アプリケーションを監視する別のアプリケーションを作成する必要がありますそして、それが強制終了されるたびに、アプリケーションはそれを再度実行します。10s次のコードを使用してアプリケーションが実行されているかどうかを確認し、任意の間隔ごとにタイマーを介してこのコードを呼び出すことができます。

private bool IsProcessRunning(string name)
{
     foreach (Process p in Process.GetProcesses())
     {
            if (p.ProcessName.Contains(name))
            {
                return true;
            }
      }
      return false;
 }
于 2013-08-03T13:42:30.930 に答える