public List <ProcessInfo> GetValue() { List <ProcessInfo> procesInfos = new List <ProcessInfo>(); List <Process> processes = new List <Process>(); try { switch (ProcessFilterType) { case ProcessCollectorFilterType.ProcessName: processes.AddRange(Process.GetProcessesByName(ProcessFilter)); break; case ProcessCollectorFilterType.ExecutableName: foreach (var p in Process.GetProcesses()) { try { if (p.MainModule != null && p.MainModule.ModuleName.ToLower() == ProcessFilter.ToLower()) { processes.Add(p); } } catch { } } break; case ProcessCollectorFilterType.DisplayName: processes.AddRange((from p in Process.GetProcesses() where p.MainWindowTitle.ToLower() == ProcessFilter.ToLower() select p)); break; case ProcessCollectorFilterType.FullPath: // using (ManagementObjectSearcher searcher = new ManagementObjectSearcher($"SELECT ProcessId,ExecutablePath FROM Win32_Process WHERE ExecutablePath like '{ProcessFilter.Replace("\\","\\\\")}%'")) { using (ManagementObjectCollection results = searcher.Get()) { int nItems = results.Count; if (nItems > 0) { foreach (ManagementObject objServiceInstance in results) { object val = objServiceInstance.Properties["ProcessId"].Value; try { //int processId = 0; if (int.TryParse(val.ToString(), out int processId)) { processes.Add(Process.GetProcessById(processId)); } } catch { } } } } } break; case ProcessCollectorFilterType.StartUpCommandLine: using (ManagementObjectSearcher searcher = new ManagementObjectSearcher($"SELECT ProcessId,CommandLine FROM Win32_Process WHERE CommandLine like '{ProcessFilter.Replace("\\","\\\\")}'")) { using (ManagementObjectCollection results = searcher.Get()) { int nItems = results.Count; if (nItems > 0) { foreach (ManagementObject objServiceInstance in results) { object val = objServiceInstance.Properties["ProcessId"].Value; try { if (int.TryParse(val.ToString(), out int processId)) { processes.Add(Process.GetProcessById(processId)); } } catch { } } } } } break; default: break; } } catch (Exception ex) { } if (processes.Count > 0) { foreach (Process process in processes) { procesInfos.Add(ProcessInfo.CreateFromProcess(process, true)); // CheckPerformance)); } } return(procesInfos); }