Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get all window handles for a process

Using Microsoft Spy++, I can see that the following windows that belong to a process:

Process XYZ window handles, displayed in tree form just like Spy++ gives me:

A
  B
  C
     D
E
F
  G
  H
  I
  J
     K

I can get the process, and the MainWindowHandle property points to the handle for window F. If I enumerate the child windows using I can get a list of window handles for G through K, but I can't figure out how to find the window handles for A through D. How can I enumerate windows that are not children of the handle specified by MainWindowHandle of the Process object?

To enumerate I'm using the win32 call:

[System.Runtime.InteropServices.DllImport(strUSER32DLL)]
            public static extern int EnumChildWindows(IntPtr hWnd, WindowCallBack pEnumWindowCallback, int iLParam);
like image 236
Jeremy Avatar asked Jun 10 '10 22:06

Jeremy


1 Answers

You can use EnumWindows to get every top-level window, and then filter the results based on GetWindowThreadProcessId.

like image 135
zildjohn01 Avatar answered Sep 18 '22 18:09

zildjohn01