c# 关闭进程使用 CloseReason 发送消息
本文关键字:CloseReason 消息 进程 | 更新日期: 2023-09-27 18:31:32
我需要关闭一个定义特定 CloseReason 的进程,这是因为我需要杀死的进程检查表单关闭,如果 CloseReason是 WindowsShutDown 它关闭程序,否则没有:
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason != CloseReason.WindowsShutDown)
{
e.Cancel = true;
Hide();
}
}
但是如果我从另一个程序这样做:
List<Process> pp = Process.GetProcessesByName("myProgram").ToList();
foreach (var p in pp)
{
p.CloseMainWindow();
p.WaitForExit();
}
但是该程序并未关闭。
我该怎么做?
我们不能显式设置 Process.Kill 或 CloseMainWindow() 的关闭原因。以下是可用的关闭原因,您可以选择适当的原因
-
ApplicationExitCall
应用程序类的 Exit 方法是调用。 -
FormOwnerClosing
所有者窗体正在关闭。 -
MdiFormClosing
此多文档界面的父窗体(MDI) 表格正在关闭。 -
None
关闭的原因未确定或无法确定确定。 -
TaskManagerClosing
Microsoft Windows 任务管理器即将关闭应用程序。 -
UserClosing
用户通过用户界面关闭表单(UI),例如,通过单击窗体窗口上的"关闭"按钮,从窗口的控制菜单中选择"关闭",或按 Alt+F4。 -
WindowsShutDown
操作系统正在关闭所有应用程序
在关闭之前。