WinAPI - 获取 Window-Handle 的所有控制句柄
WinAPI - Get all Control-Handles of a Window-Handle
我尝试使用 UI-Automation,
目前我试图获取一个进程的所有句柄,但我在获取所有子控件句柄时遇到了问题。
任何人都知道如何获得这些句柄来获得控制矩形?
您可以使用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);
}
我尝试使用 UI-Automation, 目前我试图获取一个进程的所有句柄,但我在获取所有子控件句柄时遇到了问题。 任何人都知道如何获得这些句柄来获得控制矩形?
您可以使用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);
}