我需要关闭一个定义特定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();
}
但程序没有关闭....
我该怎么做?
答案 0 :(得分:1)
我们无法显式设置Process.Kill或CloseMainWindow()的关闭原因。以下是可用的详细原因,您可以选择合适的原因
ApplicationExitCall
Application类的Exit方法是
调用。FormOwnerClosing
所有者表单正在关闭。MdiFormClosing
此多文档界面的父表单
(MDI)表格即将结束。None
关闭的原因没有定义或不定
确定。TaskManagerClosing
Microsoft Windows任务管理器即将关闭
申请。UserClosing
用户正在通过用户界面关闭表单
(UI),例如通过单击窗体窗口上的“关闭”按钮,
从窗口的控制菜单中选择关闭,或按ALT + F4。WindowsShutDown
操作系统正在关闭所有应用程序