ProcessUtils.cs
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Text;
namespace Utils {
public static class ProcessUtils {
/// <summary>
/// 获取进程名
///
/// </summary>
/// <param name="processName">进程名</param>
/// <param name="processPath"></param>
/// <returns></returns>
public static List<Process> GetProcessByName(string processName, string processPath) {
if (processName.ToLower().EndsWith(".exe")) {
processName = processName.Substring(0, processName.Length - 4);
}
List<Process> processList = new List<Process>();
Process[] processArray = Process.GetProcessesByName(processName);
if (!string.IsNullOrEmpty(processPath)) {
// 路径的判断
foreach (Process process in processArray) {
// MainModule会引起64位和32位的兼容问题,使用api来获取进程
//if (process.MainModule.FileName.Equals(processPath)) {
// processList.Add(process);
//}
var processHandler = DllUtils.OpenProcess(0x0400 | 0x0010, false, (uint)process.Id);
if (processHandler == IntPtr.Zero) {
return null;
}
const int lengthSb = 4000;
var sb = new StringBuilder(lengthSb);
if (DllUtils.GetModuleFileNameEx(processHandler, IntPtr.Zero, sb, lengthSb)) {
if (sb.ToString().Equals(processPath)) {
processList.Add(process);
}
}
DllUtils.CloseHandle(processHandler);
}
} else {
processList.AddRange(processArray);
}
return processList;
}
public static string GetProcessName(string processPath) {
FileInfo fileInfo = new FileInfo(processPath);
if (fileInfo.Name.Contains(".")) {
return fileInfo.Name.Substring(0, fileInfo.Name.LastIndexOf("."));
} else {
return fileInfo.Name;
后面还有 4 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。