示例#1
0
        /// <summary>
        /// Returns the number of Displays using the Win32 functions
        /// </summary>
        /// <returns>collection of Display Info</returns>
        public DisplayInfoCollection GetDisplays()
        {
            DisplayInfoCollection col = new DisplayInfoCollection();

            EnumDisplayMonitors(IntPtr.Zero, IntPtr.Zero,
                                delegate(IntPtr hMonitor, IntPtr hdcMonitor, ref RectStruct lprcMonitor, IntPtr dwData)
            {
                MonitorInfoEx mi = new MonitorInfoEx();
                mi.Size          = Marshal.SizeOf(mi);
                bool success     = GetMonitorInfo(hMonitor, ref mi);
                if (success)
                {
                    DisplayInfo di  = new DisplayInfo();
                    di.hdcMonitor   = hdcMonitor;
                    di.hMonitor     = hMonitor;
                    di.ScreenWidth  = (mi.Monitor.Right - mi.Monitor.Left);
                    di.ScreenHeight = (mi.Monitor.Bottom - mi.Monitor.Top);
                    di.MonitorArea  = mi.Monitor;
                    di.WorkArea     = mi.WorkArea;
                    di.Availability = mi.Flags.ToString();
                    di.DeviceName   = mi.DeviceName;

                    col.Add(di);
                }
                return(true);
            }, IntPtr.Zero);
            return(col);
        }
示例#2
0
        /// <summary>
        /// Returns the number of Displays using the Win32 functions
        /// </summary>
        /// <returns>collection of Display Info</returns>
        public static DisplayInfoCollection GetDisplays(float?scale = null, int?offsetX = null, int?offsetY = null)
        {
            DisplayInfoCollection col = new DisplayInfoCollection();

            EnumDisplayMonitors(IntPtr.Zero, IntPtr.Zero,
                                delegate(IntPtr hMonitor, IntPtr hdcMonitor, ref Rect lprcMonitor, IntPtr dwData)
            {
                MonitorInfo mi = new MonitorInfo();
                mi.Size        = (uint)Marshal.SizeOf(mi);
                bool success   = GetMonitorInfo(hMonitor, ref mi);
                mi             = mi.Scale(scale ?? 1, offsetX ?? 0, offsetY ?? 0);
                if (success)
                {
                    DisplayInfo di  = new DisplayInfo();
                    di.ScreenWidth  = (mi.Monitor.Right - mi.Monitor.Left).ToString();
                    di.ScreenHeight = (mi.Monitor.Bottom - mi.Monitor.Top).ToString();
                    di.MonitorArea  = mi.Monitor;
                    di.WorkArea     = mi.WorkArea;
                    di.Availability = mi.Flags.ToString();
                    col.Add(di);
                }
                return(true);
            }, IntPtr.Zero);
            col.Sort((x, y) => x.WorkArea.Left.CompareTo(y.WorkArea.Left));
            return(col);
        }
示例#3
0
        /// <summary>
        /// Returns the number of Displays using the Win32 functions
        /// </summary>
        /// <returns>collection of Display Info</returns>
        public DisplayInfoCollection GetDisplays()
        {
            DisplayInfoCollection col = new DisplayInfoCollection();

            EnumDisplayMonitors(IntPtr.Zero, IntPtr.Zero,
                                delegate(IntPtr hMonitor, IntPtr hdcMonitor, ref Rect lprcMonitor, IntPtr dwData)
            {
                MONITORINFO mi = new MONITORINFO();
                //MONITORINFOEX mi = new MONITORINFOEX();
                mi.Size      = (uint)Marshal.SizeOf(mi);
                bool success = GetMonitorInfo(hMonitor, ref mi);
                if (success)
                {
                    DisplayInfo di  = new DisplayInfo();
                    di.ScreenWidth  = (mi.Monitor.right - mi.Monitor.left).ToString();
                    di.ScreenHeight = (mi.Monitor.bottom - mi.Monitor.top).ToString();
                    di.MonitorArea  = mi.Monitor;
                    di.WorkArea     = mi.WorkArea;
                    di.Availability = mi.Flags.ToString();
                    //di.blurb = mi.DeviceName;
                    col.Add(di);
                }
                return(true);
            }, IntPtr.Zero);
            return(col);
        }
示例#4
0
        public static DisplayInfoCollection GetDisplays()
        {
            DisplayInfoCollection col = new DisplayInfoCollection();

            NativeMethod.EnumDisplayMonitors(IntPtr.Zero, IntPtr.Zero,
                                             delegate
                                             (IntPtr hMonitor, IntPtr hdcMonitor, ref RECT lprcMonitor, IntPtr dwData)
            {
                col.Add(GetInfo(hMonitor));

                return(true);
            }, IntPtr.Zero);
            return(col);
        }
    /// <summary>
    /// Returns the number of Displays using the Win32 functions
    /// </summary>
    /// <returns>collection of Display Info</returns>
    public static DisplayInfoCollection GetDisplays()
    {
        DisplayInfoCollection col = new DisplayInfoCollection();

        try {
            EnumDisplayMonitors(IntPtr.Zero, IntPtr.Zero,
                                delegate(IntPtr hMonitor, IntPtr hdcMonitor, ref Rect lprcMonitor, IntPtr dwData)
            {
                MonitorInfoEx mi = new MonitorInfoEx();
                mi.Init();
                mi.size      = Marshal.SizeOf(mi);
                mi.size      = 72;
                bool success = GetMonitorInfo(hMonitor, ref mi);
                if (success)
                {
                    DisplayInfo di  = new DisplayInfo();
                    di.ScreenWidth  = (mi.monitor.right - mi.monitor.left).ToString();
                    di.ScreenHeight = (mi.monitor.bottom - mi.monitor.top).ToString();
                    di.MonitorArea  = mi.monitor;
                    di.WorkArea     = mi.work;
                    di.Availability = mi.flags.ToString();
                    di.DeviceName   = mi.DeviceName;
                    col.Add(di);
                }
                else
                {
                    Debug.Log("getting monitor info failed");
                }
                return(true);
            }, IntPtr.Zero);

            AddAdditionalInfos(col);
        }
        catch (System.Exception e)
        {
            Debug.LogError(e);
        }
        return(col);
    }
示例#6
0
    /// <summary>
    /// Returns the number of Displays using the Win32 functions
    /// </summary>
    /// <returns>collection of Display Info</returns>
    public static DisplayInfoCollection GetDisplays()
    {
        DisplayInfoCollection col = new DisplayInfoCollection();

        EnumDisplayMonitors(IntPtr.Zero, IntPtr.Zero,
                            delegate(IntPtr hMonitor, IntPtr hdcMonitor, ref Rect lprcMonitor, IntPtr dwData)
        {
            MonitorInfo mi = new MonitorInfo();
            mi.size        = (uint)Marshal.SizeOf(mi);
            bool success   = GetMonitorInfoA(hMonitor, ref mi);
            if (success)
            {
                DisplayInfo di  = new DisplayInfo();
                di.ScreenWidth  = (mi.rcMonitor.right - mi.rcMonitor.left).ToString();
                di.ScreenHeight = (mi.rcMonitor.bottom - mi.rcMonitor.top).ToString();
                di.MonitorArea  = mi.rcMonitor;
                di.WorkArea     = mi.rcWork;
                di.Availability = mi.flags.ToString();
                col.Add(di);
            }
            return(true);
        }, IntPtr.Zero);
        return(col);
    }
示例#7
0
        /// <summary>
        /// Returns the number of Displays using the Win32 functions
        /// </summary>
        /// <returns>collection of Display Info</returns>
        private static void GetDisplays()
        {
            Displays = new DisplayInfoCollection();

            EnumDisplayMonitors(IntPtr.Zero, IntPtr.Zero,
                                delegate(IntPtr hMonitor, IntPtr hdcMonitor, ref Rect lprcMonitor, IntPtr dwData)
            {
                MonitorInfo mi = new MonitorInfo();
                mi.Size        = Marshal.SizeOf(mi);
                bool success   = GetMonitorInfo(hMonitor, ref mi);

                if (success)
                {
                    DisplayInfo di  = new DisplayInfo();
                    di.ScreenWidth  = (mi.Monitor.Right - mi.Monitor.Left).ToString();
                    di.ScreenHeight = (mi.Monitor.Bottom - mi.Monitor.Top).ToString();
                    di.MonitorArea  = mi.Monitor;
                    di.WorkArea     = mi.Work;
                    di.Availability = mi.Flags.ToString();
                    Displays.Add(di);
                }
                return(true);
            }, IntPtr.Zero);
        }