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(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);
                }
            }
        }