WinAPI - 获取窗口句柄的所有控制句柄

时间:2016-10-30 21:16:21

标签: c# winapi ui-automation

我尝试过使用UI-Automation, 目前我试图得到一个过程的所有句柄,但我有一个问题,以获得所有儿童控制句柄。 有人知道如何获取这些句柄来获取控件矩形吗?

1 个答案:

答案 0 :(得分:3)

您可以使用FindAll方法根据某些条件查找与给定元素相关的所有元素。然后你可以从这些元素中获取属性。

例如:

var notepad = System.Diagnostics.Process.GetProcessesByName("notepad").FirstOrDefault();
if (notepad != null)
{
    var root = AutomationElement.FromHandle(notepad.MainWindowHandle);
    var elements = root.FindAll(TreeScope.Subtree, Condition.TrueCondition)
                        .Cast<AutomationElement>();
    //example:
    //elements.Select(x=>x.Current.Name)
    //elements.Select(x => x.Current.ControlType);
    //elements.Select(x => x.Current.NativeWindowHandle);
    //elements.Select(x => x.Current.BoundingRectangle);
}