|
프로세스 선택하기 |
private void button2_Click(object sender, EventArgs e) { treeView1.Nodes.Clear(); if (listBox1.Text.Equals(string.Empty)) { return; } IntPtr Handle = SearchHandle(listBox1.Text); AttributeSeach(Handle, listBox1.Text); } |
ListBox에 있는 프로세스 중에 하나를 고르고 선택버튼을 눌러 프로세스를 선택한다. |
IntPtr SearchHandle(string name) |
private IntPtr SearchHandle(string name) { Process[] pro = new Process[Process.GetProcesses().Length]; pro = Process.GetProcesses(); for (int i = 0; i < pro.Length; i++) { if ((pro[i].MainWindowTitle.Equals(name.ToString()))) { return pro[i].MainWindowHandle; } } return (IntPtr)0; } |
현재 작동중인 프로세스를 찾아서 선택한 프로세스의 이름과 같은 프로세르의 핸들 값을 얻어온다.. |
void AttributeSearch(IntPtr Handle, string p) |
private void AttributeSeach(IntPtr Handle, string p) { autoe = AutomationElement.FromHandle(Handle); TreeNode node = new TreeNode(p); treeView1.Nodes.Add(node); Search(autoe, node); } |
핸들 값을 받아와서 AutomationElement 변수에 해당 핸들값의 요소를 대입하고 TreeNode 변수에 선택한 프로세스의 이름으로 node를 생성한 후 Search함수에 넘겨준다. |
void Search(AutomationElement autoe, TreeNode node) |
private void Search(AutomationElement autoe, TreeNode node) { Condition condition = new PropertyCondition( AutomationElement.IsControlElementProperty, true); TreeWalker walker = new TreeWalker(condition); AutomationElement elementNode = walker.GetFirstChild(autoe); while (elementNode != null) { TreeNode child = node.Nodes.Add( elementNode.Current.ControlType.LocalizedControlType); Search(elementNode, child); child.Text = string.Format(child.Text + " :{0}", elementNode.Current.Name); elementNode = walker.GetNextSibling(elementNode); } } |
해당 노드에 선택한 프로세스의 속성들을 추가시킨다. |
결과물이다.