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); }
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))); }