优化后的代码,没有实现你说的效果,进程依然可以关闭程序
时间: 2024-04-11 11:28:41 浏览: 18
很抱歉,我之前的回答有误。在 Windows 中,任务管理器关闭进程是无法被拦截的。任务管理器是一个系统级别的工具,可以强制关闭进程,而无法通过代码阻止它的操作。
如果你希望阻止用户关闭窗口,你可以考虑使用其他方法,例如隐藏窗口、最小化到系统托盘或者禁用关闭按钮。
以下是一个示例代码,演示如何将窗口最小化到系统托盘:
```csharp
private bool minimizeToTray = false; // 标记是否最小化到系统托盘
protected override void OnFormClosing(FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.UserClosing && minimizeToTray)
{
e.Cancel = true; // 取消关闭操作
this.Hide(); // 隐藏窗口
}
else
{
base.OnFormClosing(e);
}
}
private void Form1_Resize(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
minimizeToTray = true;
notifyIcon1.Visible = true; // 显示系统托盘图标
this.Hide(); // 隐藏窗口
}
}
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
minimizeToTray = false;
this.Show(); // 显示窗口
this.WindowState = FormWindowState.Normal;
notifyIcon1.Visible = false; // 隐藏系统托盘图标
}
}
```
在这个示例中,窗口将在最小化时隐藏,并显示在系统托盘中的图标。当用户双击系统托盘图标时,窗口将恢复显示。
请注意,这只是一个示例,你可能需要根据你的实际需求进行适当的调整和修改。
希望这次能够帮到你!如果还有其他问题,请随时提问。