C# 给定x,y点,如何获取前景窗口中不存在的控件的窗口句柄?

C# 给定x,y点,如何获取前景窗口中不存在的控件的窗口句柄?,c#,.net,windows,winapi,C#,.net,Windows,Winapi,我知道,如果控件位于可见窗口中,则可以使用WindowFromPoint获取该控件的句柄。我的要求是获得控件的详细信息,即使应用程序的窗口不在前台(它不是最小化的,只是它可以在另一个窗口后面)。是否有一个WINAPI函数可以为我实现这一点 如果没有,是否有人能提出一种方法,说明我如何做到这一点,但不能做到: 1.枚举特定背景窗口中的所有控件, 2.然后得到他们的边界, 3.然后比较这些边界是否包含x,y坐标?也许WM\u-nchitest会有所帮助?例如,请参见“新旧事物” WM\u NC-HI

我知道,如果控件位于可见窗口中,则可以使用WindowFromPoint获取该控件的句柄。我的要求是获得控件的详细信息,即使应用程序的窗口不在前台(它不是最小化的,只是它可以在另一个窗口后面)。是否有一个WINAPI函数可以为我实现这一点

如果没有,是否有人能提出一种方法,说明我如何做到这一点,但不能做到: 1.枚举特定背景窗口中的所有控件, 2.然后得到他们的边界,
3.然后比较这些边界是否包含x,y坐标?

也许
WM\u-nchitest
会有所帮助?例如,请参见“新旧事物”

WM\u NC-HIT-TEST
消息并不意味着鼠标在您的窗口中;这仅仅意味着有人在问:“如果鼠标在你的窗口,它会做什么?”


您正在寻找可用于枚举所有窗口的API函数,然后是该函数。

谢谢您的回复!DefWindowProc函数返回枚举中的一个值(对应于控件类型)以响应WM_NCHITTEST消息。我实际上需要控制手柄本身。是的,我知道这些函数,使用它们的蛮力方法是我最后的选择。虽然我更喜欢使用EnumChildWindows而不是GetWindow:)编辑:GetWindow的GW\u hwnNext参数看起来很有趣!让我看看我是否能利用这一点。感谢您的提示。我尝试使用GetWindow并通过了GW_HWNDNEXT,但正如文档所示,我得到的是同级窗口,而不是最顶部窗口正下方的窗口。我最终放弃并列举了所有控件,并使用GetWindowRect匹配它们。