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 回答