/// <summary> /// Returns all matching windows with a given window filter. /// </summary> /// <param name="filter">The window filter</param> /// <returns>A generic collection with IntPtr objects (The window handles)</returns> private static IEnumerable <IntPtr> FindWindows(WinApi.EnumWindowProc filter) { var windowHandles = new List <IntPtr>(); WinApi.EnumWindows(delegate(IntPtr hWnd, IntPtr param) { if (filter(hWnd, param)) { windowHandles.Add(hWnd); } return(true); }, IntPtr.Zero); return(windowHandles); }
/// <summary> /// Returns a list of child windows (window handles) of a given parent window /// </summary> /// <param name="parent">The window handle of the parent window</param> /// <returns>The list with child window handles</returns> public static List <IntPtr> GetChildWindows(IntPtr parent) { var result = new List <IntPtr>(); var listHandle = GCHandle.Alloc(result); try { var childProc = new WinApi.EnumWindowProc(EnumWindow); WinApi.EnumChildWindows(parent, childProc, GCHandle.ToIntPtr(listHandle)); } finally { if (listHandle.IsAllocated) { listHandle.Free(); } } return(result); }