c#close process发送带CloseReason的消息

时间:2013-09-17 12:03:24

标签: c# visual-studio-2010 process

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

但程序没有关闭....

我该怎么做?

1 个答案:

答案 0 :(得分:1)

我们无法显式设置Process.Kill或CloseMainWindow()的关闭原因。以下是可用的详细原因,您可以选择合适的原因

  • ApplicationExitCall Application类的Exit方法是 调用。
  • FormOwnerClosing所有者表单正在关闭。
  • MdiFormClosing此多文档界面的父表单 (MDI)表格即将结束。
  • None关闭的原因没有定义或不定 确定。
  • TaskManagerClosing Microsoft Windows任务管理器即将关闭 申请。
  • UserClosing用户正在通过用户界面关闭表单 (UI),例如通过单击窗体窗口上的“关闭”按钮, 从窗口的控制菜单中选择关闭,或按ALT + F4。
  • WindowsShutDown操作系统正在关闭所有应用程序
    在关闭之前。