123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- /**
- *┌──────────────────────────────────────────────────────────────┐
- *│ 描 述:进程相关的工具类
- *│ 作 者:执笔小白
- *│ 版 本: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
- {
- /// <summary>
- /// 获取当前进程信息
- /// </summary>
- /// <returns></returns>
- public static Process GetCurrentProcess()
- {
- return Process.GetCurrentProcess();
- }
- /// <summary>
- /// 获取当前进程名
- /// </summary>
- /// <returns></returns>
- public static string GetCurrentProcessName()
- {
- return Process.GetCurrentProcess().ProcessName;
- }
- /// <summary>
- /// 开启进程By程序启动文件路径
- /// </summary>
- /// <param name="processName">进程名</param>
- /// <param name="workingDirectory">exe工作目录</param>
- /// <param name="useShellExecute">是否展示命令行</param>
- /// <param name="arguments">设置启动程序时使用的命令行自变量</param>
- /// <param name="windowStyle">启动时应用的窗口状态</param>
- 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);
- }
- /// <summary>
- /// 检查进程是否存在
- /// </summary>
- /// <param name="processName">进程名</param>
- /// <returns></returns>
- public static bool CheckProcessActivityByProcessName(string processName)
- {
- var processList = Process.GetProcessesByName(processName);
- return (processList != null && processList.Count() > 0) ? true : false;
- }
- /// <summary>
- /// 正常关闭进程By进程名
- /// </summary>
- /// <param name="processName">进程名</param>
- 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 { }
- }
- }
- /// <summary>
- /// 强制杀死进程By进程名
- /// </summary>
- /// <param name="processName">进程名</param>
- public static void KillProcess(string processName)
- {
- foreach (Process process in Process.GetProcessesByName(processName))
- {
- try
- {
- process.Kill(); // 强制结束
- process.WaitForExit(); // 等待退出完成
- }
- catch { }
- }
- }
- }
- }
|