Beispiel #1
0
 public TreeProcessor(TreeNode node, ProcessTreeNode eventHandler)
 {
     if (eventHandler != null)
     {
         ProcessTreeNodeEventHandler += eventHandler;
         Process(node);
     }
 }
Beispiel #2
0
 /// <summary>
 /// Enums the nodes.
 /// </summary>
 /// <param name="nodes">The nodes.</param>
 /// <param name="callback">The callback.</param>
 private static void EnumNodes(TreeNodeCollection nodes, ProcessTreeNode callback)
 {
     foreach (TreeNode node in nodes)
     {
         callback(node);
         if (node.Nodes.Count > 0)
         {
             EnumNodes(node.Nodes, callback);
         }
     }
 }
    private static void FillTree()
    {
        DateTime start   = DateTime.Now;
        var      results = new List <Process>();
        // query the management system objects for any process that has the current
        // process listed as it's parentprocessid
        string queryText = string.Format("select processid, parentprocessid from win32_process");

        using (var searcher = new ManagementObjectSearcher(queryText))
        {
            foreach (var obj in searcher.Get())
            {
                object pidObj       = obj.Properties["processid"].Value;
                object parentPidObj = obj.Properties["parentprocessid"].Value;
                if (pidObj != null)
                {
                    int pid = Convert.ToInt32(pidObj);
                    if (!processes.ContainsKey(pid))
                    {
                        processes.Add(pid, new ProcessTreeNode(pid));
                    }
                    ProcessTreeNode currentNode = processes[pid];
                    if (parentPidObj != null)
                    {
                        currentNode.Parent = Convert.ToInt32(parentPidObj);
                    }
                }
            }
        }
        DateTime num1 = DateTime.Now;

        foreach (ProcessTreeNode node in processes.Values)
        {
            if (node.Parent != 0 && processes.ContainsKey(node.Parent))
            {
                processes[node.Parent].Children.Add(node.Pid);
            }
        }
        timeFilled = DateTime.Now;
        StaticLogger.Log(string.Format("ProcessTree.FillTree() completed in {0} seconds. 1={1}  2={2}",
                                       (timeFilled - start).TotalSeconds,
                                       (num1 - start).TotalSeconds,
                                       (timeFilled - num1).TotalSeconds));
    }
    private static void FillTree()
    {
        processes.Clear();
        var    results   = new List <Process>();
        string queryText = string.Format("select processid, parentprocessid from win32_process");

        using (var searcher = new ManagementObjectSearcher(queryText))
        {
            foreach (var obj in searcher.Get())
            {
                object pidObj       = obj.Properties["processid"].Value;
                object parentPidObj = obj.Properties["parentprocessid"].Value;
                if (pidObj != null)
                {
                    int pid = Convert.ToInt32(pidObj);
                    if (!processes.ContainsKey(pid))
                    {
                        processes.Add(pid, new ProcessTreeNode(pid));
                    }
                    ProcessTreeNode currentNode = processes[pid];
                    if (parentPidObj != null)
                    {
                        currentNode.Parent = Convert.ToInt32(parentPidObj);
                    }
                }
            }
        }
        foreach (ProcessTreeNode node in processes.Values)
        {
            if (node.Parent != 0 && processes.ContainsKey(node.Parent))
            {
                processes[node.Parent].Children.Add(node.Pid);
            }
        }
        timeFilled = DateTime.Now;
    }
Beispiel #5
0
 /// <summary>
 /// Traverses the specified callback.
 /// </summary>
 /// <param name="callback">The callback.</param>
 public void Traverse(ProcessTreeNode callback)
 {
     EnumNodes(_treeView.Nodes, callback);
 }