获取进程的所有窗口的句柄
在使用进程类的C#中,我可以获得进程主窗口的句柄,但是我需要访问一个不是其进程主窗口的窗口。 如何获取进程所有窗口的句柄?
EnumChildWindows函数可能会帮助你。 儿童窗户也可能有孩子等等。
还有GetWindow和EnumThreadWindows
您可以P / Invoke GetWindowThreadProcessId()
来获取拥有主窗口的UI线程的线程ID。 从那里,您可以使用EnumThreadWindows()
找到该线程拥有的任何其他顶级窗口。 可以使用EnumChildWindows()
找到顶级窗口拥有的任何子窗口(控件EnumChildWindows()
。 访问pinvoke.net以获取必要的P / Invoke声明。
P /调用user32的EnumThreadWindows
函数,您提供的回调将被赋予给定线程的窗口句柄。 Process.GetCurrentProcess().Threads
应该返回所有调用EnumThreadWindows
的相关线程。