关闭一个进程

using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            // 关闭记事本的进程
            CloseNotepad();
        }

        /// <summary>
        /// 关闭记事本
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public static void CloseNotepad()
        {
            on:
            string process = ProcessHelper.CheckProcessName("notepad");
            if (process != string.Empty)
            {
                ProcessHelper.StopProcess(process);
                System.Threading.Thread.Sleep(1000);
                goto on;
            }
        }
    }

    public class ProcessHelper
    {
        /// <summary>
        /// 关闭一个进程
        /// </summary>
        /// <param name="processName">进程名</param>
        public static void StopProcess(string processName)
        {
            try
            {
                foreach (Process thisProc in Process.GetProcessesByName(processName))
                {
                    //if (!thisProc.CloseMainWindow())
                    //{
                        thisProc.Kill();
                    //}
                }
                while (true)
                {
                    if (!CheckProcessIsExit(processName))
                    {
                        return;
                    }
                }
            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        /// <summary>
        /// 检查一个进程是否在运行中
        /// </summary>
        /// <param name="processName">进程名</param>
        /// <returns></returns>
        public static bool CheckProcessIsExit(string processName)
        {
            bool flag = false;
            try
            {
                foreach (Process thisProc in Process.GetProcesses())
                {
                    if (thisProc.ProcessName.Equals(processName))
                    {
                        flag = true;
                        break;
                    }
                }
            }
            catch
            {
                flag = true;
            }
            return flag;
        }

        /// <summary>
        /// 检查一个进程是否在运行中
        /// </summary>
        /// <param name="processName">进程名</param>
        /// <returns></returns>
        public static string CheckProcessName(string processName)
        {
            string flag = "";
            try
            {
                foreach (Process thisProc in Process.GetProcesses())
                {
                    if (thisProc.ProcessName.Equals(processName))
                    {
                        flag = thisProc.ProcessName;
                        break;
                    }
                }
            }
            catch
            {
                flag = "";
            }
            return flag;
        }
    }
}
原文地址:https://www.cnblogs.com/lusunqing/p/3151199.html