private static Rect GetMonitorArea(Window imp, bool monitorArea) { var handle = (new WindowInteropHelper(imp)).Handle; var monitor = MonitorFromWindow(handle, MONITOR_DEFAULTTONEAREST); if (monitor != IntPtr.Zero) { var monitorData = new MONITORINFO(); if (DllImporter.GetMonitorInfo(monitor, monitorData)) { Marshal.Release(handle); handle = IntPtr.Zero; } var rect = monitorArea ? monitorData.rcMonitor : monitorData.rcWork; var area = new Rect(rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top); return(area); } return(new Rect()); }