C# WinAPI-获取窗口句柄的所有控制句柄
我尝试过一点UI自动化, 目前,我试图获取进程的所有句柄,但获取所有子控件句柄时遇到了一个问题。 有人知道如何获取这些句柄以获取控件矩形吗?例如,您可以使用方法根据某些条件查找相对于给定元素的所有元素。然后可以从这些元素中获取属性 例如:C# WinAPI-获取窗口句柄的所有控制句柄,c#,winapi,ui-automation,C#,Winapi,Ui Automation,我尝试过一点UI自动化, 目前,我试图获取进程的所有句柄,但获取所有子控件句柄时遇到了一个问题。 有人知道如何获取这些句柄以获取控件矩形吗?例如,您可以使用方法根据某些条件查找相对于给定元素的所有元素。然后可以从这些元素中获取属性 例如: var notepad = System.Diagnostics.Process.GetProcessesByName("notepad").FirstOrDefault(); if (notepad != null) { var root = Aut
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);
}
var notepad=System.Diagnostics.Process.getProcessByName(“记事本”).FirstOrDefault();
如果(记事本!=null)
{
var root=AutomationElement.FromHandle(notepad.MainWindowHandle);
var elements=root.FindAll(TreeScope.Subtree,Condition.TrueCondition)
.Cast();
//例如:
//elements.Select(x=>x.Current.Name)
//elements.Select(x=>x.Current.ControlType);
//elements.Select(x=>x.Current.NativeWindowHandle);
//elements.Select(x=>x.Current.BoundingRectangle);
}
嗯。。。您不需要为其设置窗口句柄。这是概念背后的全部想法,即它不依赖于视觉效果的特定实现。大多数浏览器没有本机窗口来实现其控件。Qt应用程序、WPF和现代UI应用程序也不例外。简而言之:在使用UI自动化时,您不需要(而且通常没有)窗口句柄。