获取进程的所有窗口句柄

8

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

3个回答

5

3
通过P/Invoke user32库的EnumThreadWindows函数,你提供的回调函数将会得到给定线程的窗口句柄。Process.GetCurrentProcess().Threads应该返回所有相关的线程,以便调用EnumThreadWindows

3
您可以使用P/Invoke调用GetWindowThreadProcessId()函数,以获取拥有主窗口的UI线程的线程ID。然后,您可以使用EnumThreadWindows()函数查找该线程拥有的任何其他顶层窗口。通过EnumChildWindows()函数可以找到由顶层窗口拥有的任何子窗口(控件)。请访问pinvoke.net获取必要的P/Invoke声明。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接