Exemple #1
0
        public static IDictionary <IntPtr, Rect> GetMonitors()
        {
            var monitors = new Dictionary <IntPtr, Rect>();
            MonitorEnumCallback @delegate =
                (IntPtr monitor, IntPtr context, ref Rect bounds, IntPtr data) => {
                monitors[monitor] = bounds;
                return(true);
            };

            EnumDisplayMonitors(IntPtr.Zero, IntPtr.Zero, @delegate, IntPtr.Zero);
            return(monitors);
        }
Exemple #2
0
        static void InitScreens()
        {
            if (multiMonitorSupport)
            {
                MonitorEnumCallback             closure = new MonitorEnumCallback();
                WinMethods.EnumMonitorsDelegate proc    = new WinMethods.EnumMonitorsDelegate(closure.Callback);
                WinMethods.EnumDisplayMonitors(NullHandleRef, IntPtr.Zero, proc, IntPtr.Zero);

                if (closure.ScreenList.Count > 0)
                {
                    Screen[] temp = new Screen[closure.ScreenList.Count];
                    closure.ScreenList.CopyTo(temp, 0);
                    screens = temp;
                }
                else
                {
                    screens = new Screen[] { new Screen((IntPtr)PRIMARY_MONITOR) };
                }
            }
            else
            {
                screens = new Screen[] { new Screen((IntPtr)PRIMARY_MONITOR, IntPtr.Zero) };
            }
        }
Exemple #3
0
 public static extern bool EnumDisplayMonitors(
     IntPtr hdc, IntPtr lprcClip, MonitorEnumCallback lpfnEnum, IntPtr dwData);