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