コード例 #1
0
    /// <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);
    }
コード例 #2
0
    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);
    }