title: Get all window handles for a process
body: <p>Using Microsoft Spy++, I can see that the following windows that belong to a process:</p>
  
  <p>Process XYZ window handles, displayed in tree form just like Spy++ gives me:</p>
  
  <pre><code>A
    B
    C
       D
  E
  F
    G
    H
    I
    J
       K
  </code></pre>
  
  <p>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?</p>
  
  <p>To enumerate I'm using the win32 call:</p>
  
  <pre><code>[System.Runtime.InteropServices.DllImport(strUSER32DLL)]
              public static extern int EnumChildWindows(IntPtr hWnd, WindowCallBack pEnumWindowCallback, int iLParam);
  </code></pre>