0

我需要关闭一个定义特定 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();
}

但程序没有关闭....

我怎样才能做到这一点?

4

1 回答 1

1

我们不能明确设置 Process.Kill 或 CloseMainWindow() 的关闭原因。以下是可用的关闭原因,您可以选择适当的原因

  • ApplicationExitCall 调用了 Application 类的 Exit 方法。
  • FormOwnerClosing 所有者表单正在关闭。
  • MdiFormClosing此多文档界面 (MDI) 表单的父表单正在关闭。
  • None 关闭的原因未定义或无法确定。
  • TaskManagerClosingMicrosoft Windows 任务管理器正在关闭应用程序。
  • UserClosing 用户正在通过用户界面 (UI) 关闭表单,例如通过单击表单窗口上的关闭按钮、从窗口的控制菜单中选择关闭或按 ALT+F4。
  • WindowsShutDown 操作系统
    在关闭前关闭所有应用程序。
于 2013-09-17T12:15:02.467 回答