private static System.IntPtr FindWindowViaBfs(System.IntPtr hWndRoot) { System.IntPtr zero = System.IntPtr.Zero; Queue <System.IntPtr> queue = new Queue <System.IntPtr>(); queue.Enqueue(hWndRoot); while (!((int)queue.Count).Equals(0) && zero.Equals((System.IntPtr)System.IntPtr.Zero)) { for (System.IntPtr ptr2 = queue.Dequeue(); !ptr2.Equals((System.IntPtr)System.IntPtr.Zero); ptr2 = Win32NativeMethods.GetWindow(ptr2, WinUserConstant.SW_SHOWMINIMIZED)) { if (_CurrWindowComparer(ptr2)) { zero = ptr2; continue; } System.IntPtr window = Win32NativeMethods.GetWindow(ptr2, WinUserConstant.SW_SHOW); if (!window.Equals((System.IntPtr)System.IntPtr.Zero)) { queue.Enqueue(window); } } } return(zero); }