Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WinAPI-获取窗口句柄的所有控制句柄_C#_Winapi_Ui Automation - Fatal编程技术网

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

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

我尝试过一点UI自动化, 目前,我试图获取进程的所有句柄,但获取所有子控件句柄时遇到了一个问题。 有人知道如何获取这些句柄以获取控件矩形吗?

例如,您可以使用方法根据某些条件查找相对于给定元素的所有元素。然后可以从这些元素中获取属性

例如:

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自动化时,您不需要(而且通常没有)窗口句柄。