예제 #1
0
        internal static WindowInfo Find(IntPtr hwnd)
        {
            if (hwnd == IntPtr.Zero)
            {
                return(null);
            }

            var result = AllWindowsList.FirstOrDefault(x => Equals(x.Hwnd, hwnd));

            if (result != null)
            {
                return(result);
            }

            var window = WindowInfo.FromHwnd(hwnd);

            return(window != null?AllWindowsList.FirstOrDefault(x => Equals(x.Window, window)) : null);
        }
예제 #2
0
        internal static WindowInfo Find(IntPtr hwnd)
        {
            if (hwnd == IntPtr.Zero)
            {
                return(null);
            }

            var result = AllWindowsList.FirstOrDefault(x => Equals(x.Hwnd, hwnd));

            if (result != null)
            {
                return(result);
            }

            var window = WindowInfo.FromHwnd(hwnd);

            // Ignore window created on separate UI threads
            if (window == null || window.Dispatcher != dispatcher)
            {
                return(null);
            }

            return(AllWindowsList.FirstOrDefault(x => Equals(x.Window, window)));
        }