private void menuItem1_Click(object sender, System.EventArgs e)
{
OpenFileDialog ofDlg = new OpenFileDialog();
ofDlg.Filter = "All Executables(*.exe)|*.exe";
if(ofDlg.ShowDialog() == DialogResult.OK)
{
try
{
Process newProcess = Process.Start(ofDlg.FileName);
if(newProcess != null)
{
newProcess.WaitForExit();
newProcess.Exited += new EventHandler(OnProcessExited);

}

ListAllProcesses();
}

catch(ArgumentException excep)
{
MessageBox.Show(excep.Message,"参数错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
}

}
} private void menuItem2_Click(object sender, System.EventArgs e)
{
if(listView1.SelectedItems.Count > 0)
{
int pid = Int32.Parse(listView1.SelectedItems[0].SubItems[1].Text);
Process selectedProcess = Process.GetProcessById(pid);

selectedProcess.WaitForExit();
//selectedProcess.Close(); selectedProcess.Exited += new EventHandler(OnProcessExited);
if(!selectedProcess.HasExited)
{
if(!selectedProcess.CloseMainWindow())
{
if(MessageBox.Show("不能关闭应用程序窗口,要继续终止进程么?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) == DialogResult.OK)
{
try
{
selectedProcess.Kill();

} //selectedProcess.WaitForExit();
//selectedProcess.Close();
catch(Exception excep)
{
MessageBox.Show(excep.Message,"不能结束进程",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
}

}
else
{
MessageBox.Show("选中的进程已经退出!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
ListAllProcesses();


}
}
else
{
MessageBox.Show("请选中一个进程!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}

解决方案 »

  1.   

    newProcess.WaitForExit();
    这个会停在这儿,直到该进程结束,再继续执行.
      

  2.   

    nod删除“newProcess.WaitForExit();”这句
      

  3.   

    System.Diagnostics.Process[] ps= System.Diagnostics.Process.GetProcesses();
                for (int i = 0; i < ps.Length; i++)
                {
                    this.textBox1.Text += ps[i].ProcessName + "\r\n";
                    if (ps[i].ProcessName.ToUpper() == "EXCEL")
                    {
                        ps[i].Kill();
                    }
                }