/** *┌──────────────────────────────────────────────────────────────┐ *│ 描 述:进程相关的工具类 *│ 作 者:执笔小白 *│ 版 本:1.2 *│ 创建时间:2022-10-13 10:40:56 *└──────────────────────────────────────────────────────────────┘ *┌──────────────────────────────────────────────────────────────┐ *│ 命名空间: Common *│ 类 名:ProcessHelper *└──────────────────────────────────────────────────────────────┘ */ using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MainForm.ClassFile { public class ProcessHelper { /// /// 获取当前进程信息 /// /// public static Process GetCurrentProcess() { return Process.GetCurrentProcess(); } /// /// 获取当前进程名 /// /// public static string GetCurrentProcessName() { return Process.GetCurrentProcess().ProcessName; } /// /// 开启进程By程序启动文件路径 /// /// 进程名 /// exe工作目录 /// 是否展示命令行 /// 设置启动程序时使用的命令行自变量 /// 启动时应用的窗口状态 public static Process StartProcess(string processPath, string workingDirectory = "", bool useShellExecute = true, string arguments = "", ProcessWindowStyle windowStyle = ProcessWindowStyle.Minimized) { ProcessStartInfo info = new ProcessStartInfo(); info.FileName = processPath; if (!string.IsNullOrEmpty(workingDirectory)) { info.WorkingDirectory = workingDirectory; info.CreateNoWindow = true; } info.UseShellExecute = useShellExecute; info.Arguments = arguments; info.WindowStyle = windowStyle; return Process.Start(info); } /// /// 检查进程是否存在 /// /// 进程名 /// public static bool CheckProcessActivityByProcessName(string processName) { var processList = Process.GetProcessesByName(processName); return (processList != null && processList.Count() > 0) ? true : false; } /// /// 正常关闭进程By进程名 /// /// 进程名 public static void CloseProcess(string processName) { var processList = Process.GetProcessesByName(processName); foreach (Process process in processList) { try { if (!process.CloseMainWindow()) // 通知正常关闭 { process.Kill(); // 强制结束 process.WaitForExit(); // 等待退出完成 } } catch { } } } /// /// 强制杀死进程By进程名 /// /// 进程名 public static void KillProcess(string processName) { foreach (Process process in Process.GetProcessesByName(processName)) { try { process.Kill(); // 强制结束 process.WaitForExit(); // 等待退出完成 } catch { } } } } }