获取进程的所有窗口的句柄

时间:2010-02-10 16:46:48

标签: c#

在使用进程类的C#中,我可以获得进程主窗口的句柄,但是我需要访问一个不是其进程主窗口的窗口。如何获取进程所有窗口的句柄?

3 个答案:

答案 0 :(得分:5)

EnumChildWindows功能可能会帮助您。儿童窗户也可能有孩子等等。

还有GetWindowEnumThreadWindows

答案 1 :(得分:3)

P /调用user32的EnumThreadWindows函数,您提供的回调将被赋予给定线程的窗口句柄。 Process.GetCurrentProcess().Threads应该返回给您调用EnumThreadWindows的所有相关主题。

答案 2 :(得分:3)

您可以P / Invoke GetWindowThreadProcessId()获取拥有主窗口的UI线程的线程ID。从那里,您可以找到该线程拥有EnumThreadWindows()的任何其他顶级窗口。可以使用EnumChildWindows()找到顶级窗口拥有的任何子窗口(控件)。访问pinvoke.net以获取必要的P / Invoke声明。