2010-02-10 107 views
8

在C#中使用進程類我可以獲取進程的主窗口的句柄,但我需要訪問不是其進程的主窗口的窗口。我如何獲得一個流程的所有窗口的句柄?獲取進程的所有窗口的進程

回答

3

P /調用USER32的EnumThreadWindows功能,您提供的回調將給予窗口的句柄對於一個給定的線程。 Process.GetCurrentProcess().Threads應該返回給您所有相關的線索,以呼叫EnumThreadWindows

3

您可以P/Invoke GetWindowThreadProcessId()獲取擁有主窗口的UI線程的線程ID。從那裏,你可以找到EnumThreadWindows()該線程擁有的任何其他頂級窗口。任何由頂級窗口擁有的子窗口(控件)都可以通過EnumChildWindows()找到。訪問pinvoke.net以獲取必要的P/Invoke聲明。