private bool GetSelectedFileName(out string filename) { filename = null; TreeViewItemModel model = MainTreeView.SelectedItem as TreeViewItemModel; if (model != null) { Process p = model.Tag as Process; if (p != null) { filename = p.GetSafeProcessName(); return(true); } else { ProcessModule m = model.Tag as ProcessModule; if (m != null) { filename = m.GetSafeModuleName(); return(true); } } } return(false); }
private bool FilterDataObjectItem(object obj) { TreeViewItemModel item = obj as TreeViewItemModel; if (item == null) { return(false); } return(item.Name.ToLower().Contains(TextToFind)); }
public override void Refresh(Dictionary <string, TreeViewItemModel> itemsDictionary) { foreach (Process p in Process.GetProcesses()) { if ((p.Id < 10) || RefreshManager.KnownSystemServices.ContainsKey(p.ProcessName)) { continue; } string procname = p.GetSafeProcessName(); ProcessModuleCollection pmc = null; try { pmc = p.Modules; } catch { continue; } if (pmc != null) { string key = procname.ToLower(); TreeViewItemModel pi = null; if (!itemsDictionary.TryGetValue(procname, out pi)) { pi = new TreeViewItemModel(GetDisplayNameFromProcessName(procname), key, p); itemsDictionary[procname] = pi; } foreach (ProcessModule m in pmc) { string moduleName = m.GetSafeModuleName(); // TODO: decorate with more info string moduleKey = moduleName.ToLower(); pi.AddItem(moduleName, moduleKey, m); } } } }
public override void Refresh(Dictionary<string, TreeViewItemModel> itemsDictionary) { foreach(Process p in Process.GetProcesses()) { if ((p.Id < 10) || RefreshManager.KnownSystemServices.ContainsKey(p.ProcessName)) { continue; } string procname = p.GetSafeProcessName(); ProcessModuleCollection pmc = null; try { pmc = p.Modules; } catch { continue; } if (pmc != null) { string key = procname.ToLower(); TreeViewItemModel pi = null; if (!itemsDictionary.TryGetValue(procname, out pi)) { pi = new TreeViewItemModel(GetDisplayNameFromProcessName(procname), key, p); itemsDictionary[procname] = pi; } foreach (ProcessModule m in pmc) { string moduleName = m.GetSafeModuleName(); // TODO: decorate with more info string moduleKey = moduleName.ToLower(); pi.AddItem(moduleName, moduleKey, m); } } } }
public override void Refresh(Dictionary <string, TreeViewItemModel> itemsDictionary) { var duplicates = new Dictionary <string, Dictionary <string, TreeViewItemModel> >(); // reset all duplicates foreach (TreeViewItemModel model in itemsDictionary.Values) { model.IsDuplicate = false; } foreach (Process p in Process.GetProcesses()) { if ((p.Id < 10) || RefreshManager.KnownSystemServices.ContainsKey(p.ProcessName)) { continue; } string processName = p.GetSafeProcessName(); string processKey = processName.ToLower(); ProcessModuleCollection pmc = null; try { pmc = p.Modules; } catch { continue; } if (pmc != null) { string formattedProcessName = string.Format("{0} [{1}]", processName, p.Id); foreach (ProcessModule m in pmc) { string moduleName = m.GetSafeModuleName(); string moduleKey = moduleName.ToLower(); TreeViewItemModel pi = null; if (!itemsDictionary.TryGetValue(moduleKey, out pi)) { pi = new TreeViewItemModel(GetDisplayNameFromModuleName(moduleName), moduleKey, m); itemsDictionary[moduleKey] = pi; } pi.AddItem(processName, processKey, p); // now, enable duplicate detection string moduleFileName = Path.GetFileName(moduleKey); Dictionary <string, TreeViewItemModel> existingModules = null; if (duplicates.TryGetValue(moduleFileName, out existingModules)) { existingModules[moduleKey] = pi; if (existingModules.Keys.Count > 1) { foreach (TreeViewItemModel model in existingModules.Values) { model.IsDuplicate = true; } } } else { // register single dictionary only var newModule = new Dictionary <string, TreeViewItemModel>(); newModule[moduleKey] = pi; duplicates[moduleFileName] = newModule; } } } } }
public override void Refresh(Dictionary<string, TreeViewItemModel> itemsDictionary) { var duplicates = new Dictionary<string, Dictionary<string, TreeViewItemModel>>(); // reset all duplicates foreach(TreeViewItemModel model in itemsDictionary.Values) { model.IsDuplicate = false; } foreach(Process p in Process.GetProcesses()) { if ((p.Id < 10) || RefreshManager.KnownSystemServices.ContainsKey(p.ProcessName)) { continue; } string processName = p.GetSafeProcessName(); string processKey = processName.ToLower(); ProcessModuleCollection pmc = null; try { pmc = p.Modules; } catch { continue; } if (pmc != null) { string formattedProcessName = string.Format("{0} [{1}]", processName, p.Id); foreach (ProcessModule m in pmc) { string moduleName = m.GetSafeModuleName(); string moduleKey = moduleName.ToLower(); TreeViewItemModel pi = null; if (!itemsDictionary.TryGetValue(moduleKey, out pi)) { pi = new TreeViewItemModel(GetDisplayNameFromModuleName(moduleName), moduleKey, m); itemsDictionary[moduleKey] = pi; } pi.AddItem(processName, processKey, p); // now, enable duplicate detection string moduleFileName = Path.GetFileName(moduleKey); Dictionary<string, TreeViewItemModel> existingModules = null; if (duplicates.TryGetValue(moduleFileName, out existingModules)) { existingModules[moduleKey] = pi; if (existingModules.Keys.Count > 1) { foreach (TreeViewItemModel model in existingModules.Values) { model.IsDuplicate = true; } } } else { // register single dictionary only var newModule = new Dictionary<string, TreeViewItemModel>(); newModule[moduleKey] = pi; duplicates[moduleFileName] = newModule; } } } } }