/// <summary> /// 设置窗口到副屏上,并且最大化。 /// 如果只有一个屏,则只在主屏上显示。 /// </summary> /// <param name="hWnd">窗口句柄</param> public static void SetWindowToMonitor(IntPtr hWnd) { if (monitorInfos == null || monitorInfos.Count == 0) { return; } MONITORRECT monRect = new MONITORRECT(); if (monitorInfos.Count == 1) { monRect = monitorInfos[0].rect; } else { foreach (var item in monitorInfos) { if (!item.isPrimary) { monRect = item.rect; break; } } } //UnityEngine.Debug.Log(string.Format("left:{0},right:{1},top:{2},bottom:{3}", monRect.left, monRect.right, monRect.top, monRect.bottom)); SetWindowPos(hWnd, 0, monRect.left, monRect.top, (int)(monRect.right - monRect.left), (int)(monRect.bottom - monRect.top), SWP_SHOWWINDOW); ShowWindow(hWnd, SW_MAXIMIZE); }
private static bool MonitorEnumProcCallBack(IntPtr hDesktop, IntPtr hdc, ref MONITORRECT pRect, int dwData) { if (m_monitorInfos == null) { m_monitorInfos = new List <MonitorInfo>(); } MonitorInfo info = new MonitorInfo(); info.rect = pRect; info.monPtr = hDesktop; info.isPrimary = (hDesktop == primaryPtr); m_monitorInfos.Add(info); return(true); }