本示例建立两个项目,一个Process1作为外部进程的示例,一个KillProcess项目--完成启动和杀死外部进程的工作。

先创建一个winfrom窗体项目Process1。

然后添加一个新的winfrom窗体项目KillProcess,添加类ProcessMag,其代码如下:


using System.Diagnostics;
using System.Windows.Forms;

public class ProcessMag
    {
        public Process pss;//定义进程

        /// <summary>启动外部进程</summary>
        public void ExeProcess()
        {
            //打开程序进程函数
            if (pss == null)
            {
                pss = new System.Diagnostics.Process();
                String path = System.IO.Path.Combine((Application.StartupPath + @"\Process1.exe"));//文件放置在根目录下
                pss.StartInfo.FileName = path;
                pss.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
                pss.Start();
            }
            else
            {
                if (pss.HasExited) //是否正在运行
                {
                    pss.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
                    pss.Start();
                }
            }
        }

        //关闭进程
        public bool KillPss(Process[] pro, string ProcessName)
        {
            for (int i = 0; i < pro.Length; i++)//遍历所有查找到的进程
            {
                string pssname = pro[i].ProcessName;
                //Console.WriteLine("进程" + i.ToString() + ":" + pssname);
                if (pssname.ToUpper() == ProcessName.ToUpper())
                //if (pro[i].Id == 6736)
                {
                    try
                    {
                        pro[i].Kill();//结束进程
                        Console.WriteLine("已杀死进程:'" + ProcessName + "'.");
                        return true;
                    }
                    catch(Exception ex)
                    {
                        Console.WriteLine("杀死进程'" + ProcessName + "'失败!");
                        return false;
                    }
                }
            }

            return false;
        }

    }

主窗体代码如下:

using System.Diagnostics;
public partial class FormKill : Form
    {
        ProcessMag _processMag = new ProcessMag();
        Process[] _pro = null;

        public FormKill()
        {
            InitializeComponent();
        }

        private void FormKill_Load(object sender, EventArgs e)
        {
            _processMag.ExeProcess();//启动外部进程

            timer1.Enabled = true;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            timer1.Enabled = false;
            _pro = Process.GetProcesses();//获取已开启的所有进程
            label_pssnum.Text = "进程总数:" + _pro.Length.ToString();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            bool ok = _processMag.KillPss(_pro, "Process1");
            //bool ok = _processMag.KillPss(_pro, "vchost");//Windows Update
            string rst = ok ? "成功" : "失败";
            label_result.Text = "执行结果:" + rst;
        }
    }

完整代码下载