Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        private bool FilterDataObjectItem(object obj)
        {
            TreeViewItemModel item = obj as TreeViewItemModel;

            if (item == null)
            {
                return(false);
            }

            return(item.Name.ToLower().Contains(TextToFind));
        }
Exemplo n.º 3
0
        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);
                    }
                }
            }
        }
Exemplo n.º 4
0
        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);
                    }
                }
            }
        }
Exemplo n.º 5
0
        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;
                        }
                    }
                }
            }
        }
Exemplo n.º 6
0
        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;
                        }
                    }
                }
            }
        }