示例#1
0
        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);
        }