使用C#中的Process类,可以获取一个进程的主窗口句柄,但我需要访问一个不是该进程的主窗口的窗口。如何获取该进程所有窗口的句柄?
EnumThreadWindows
函数,你提供的回调函数将会得到给定线程的窗口句柄。Process.GetCurrentProcess().Threads
应该返回所有相关的线程,以便调用EnumThreadWindows
。GetWindowThreadProcessId()
函数,以获取拥有主窗口的UI线程的线程ID。然后,您可以使用EnumThreadWindows()
函数查找该线程拥有的任何其他顶层窗口。通过EnumChildWindows()
函数可以找到由顶层窗口拥有的任何子窗口(控件)。请访问pinvoke.net获取必要的P/Invoke声明。