public void LoadProcesses() { _processes.Clear(); List<ChromiumProcess> chromes = new List<ChromiumProcess>(); HashSet<int> chromePids = new HashSet<int>(); foreach (Process p in Process.GetProcesses()) { // System.Diagnostics.Process uses a naive implementation that is unable to deal with many // types of processes (such as those already under a debugger, or those with a high // privilege level), so use NtProcess instead. NtProcess ntproc = new NtProcess(p.Id); if (!ntproc.IsValid) continue; FullPath processPath = new FullPath(ntproc.Win32ProcessImagePath); if (processPath.StartsWith(_installationData.InstallationPath)) { chromes.Add(new ChromiumProcess(ntproc, _installationData)); chromePids.Add(p.Id); } } foreach (ChromiumProcess chrome in chromes) { // Only insert root processes at this level, child processes will be children of one of // these processes. if (!chromePids.Contains(chrome.ParentPid)) { ChromeProcessViewModel viewModel = new ChromeProcessViewModel(_root, chrome); viewModel.LoadProcesses(chromes.ToArray()); _processes.Add(viewModel); } } }
public void LoadProcesses(ChromiumProcess[] chromes) { foreach (ChromiumProcess chrome in chromes) { if (chrome.ParentPid == _process.Pid) { ChromeProcessViewModel viewModel = new ChromeProcessViewModel(_root, chrome); viewModel.LoadProcesses(chromes.ToArray()); _childProcesses.Add(viewModel); } } }
public void LoadProcesses() { _processes.Clear(); List <ChromiumProcess> chromes = new List <ChromiumProcess>(); HashSet <int> chromePids = new HashSet <int>(); foreach (Process p in Process.GetProcesses()) { // System.Diagnostics.Process uses a naive implementation that is unable to deal with many // types of processes (such as those already under a debugger, or those with a high // privilege level), so use NtProcess instead. NtProcess ntproc = new NtProcess(p.Id); if (!ntproc.IsValid) { continue; } FullPathName processPath = new FullPathName(ntproc.Win32ProcessImagePath); if (processPath.StartsWith(_installationData.InstallationPath)) { chromes.Add(new ChromiumProcess(ntproc, _installationData)); chromePids.Add(p.Id); } } foreach (ChromiumProcess chrome in chromes) { // Only insert root processes at this level, child processes will be children of one of // these processes. if (!chromePids.Contains(chrome.ParentPid)) { ChromeProcessViewModel viewModel = new ChromeProcessViewModel(_root, chrome); viewModel.LoadProcesses(chromes.ToArray()); _processes.Add(viewModel); } } }