public void UpdateMonitors() { FreeMonitors(); WindowsAPI.EnumDisplayMonitors(IntPtr.Zero, IntPtr.Zero, delegate( IntPtr hMonitor, IntPtr hdcMonitor, ref RECT lprcMonitor, IntPtr dwData) { MonitorDevice mi = new MonitorDevice(); mi.handle = hMonitor; mi.index = listMonitors.Count; listMonitors.Add(mi); return true; }, IntPtr.Zero); }
public bool FullScreenWindow(IntPtr hWnd, int iMonitorIndex = 0) { if (hWnd == IntPtr.Zero || !WindowsAPI.IsWindow(hWnd)) { return false; } MonitorDevice md = GetMonitor(iMonitorIndex); if (md.handle != IntPtr.Zero) { Rect rc = md.GetMonitorRect(); WindowsAPI.SetWindowPos( hWnd, IntPtr.Zero, (int)rc.Left, (int)rc.Top, (int)rc.Width, (int)rc.Height, CommonConst.SWP_SHOWWINDOW | CommonConst.SWP_FRAMECHANGED | CommonConst.SWP_NOZORDER); return true; } return false; }
public bool CenterWindow(IntPtr hWnd, int iMonitorIndex = 0, bool bUseWorkArea = false) { RECT srect = new RECT(); WindowsAPI.GetWindowRect(hWnd, ref srect); Rect rect = new Rect(srect.left, srect.top, srect.right - srect.left, srect.bottom - srect.top); if (0 > iMonitorIndex) { rect = CenterWindowToAll(rect, bUseWorkArea); } else if (0 == iMonitorIndex) { MonitorDevice pMonitor = GetNearestMonitor(hWnd); if (pMonitor.handle == IntPtr.Zero) { return false; } rect = pMonitor.CenterRectToMonitor(rect, bUseWorkArea); } else { MonitorDevice pMonitor = GetMonitor(iMonitorIndex); if (pMonitor.handle == IntPtr.Zero) { return false; } rect = pMonitor.CenterRectToMonitor(rect, bUseWorkArea); } return WindowsAPI.SetWindowPos( hWnd, IntPtr.Zero, (int)rect.Left, (int)rect.Top, 0, 0, CommonConst.SWP_NOSIZE | CommonConst.SWP_NOZORDER); }