コード例 #1
0
 private static int DisplaySort(MainWindow.DisplayModes a, MainWindow.DisplayModes b)
 {
     if (a.x < b.x)
     {
         return(-1);
     }
     if (a.x > b.x)
     {
         return(1);
     }
     if (a.y < b.y)
     {
         return(-1);
     }
     if (a.y > b.y)
     {
         return(1);
     }
     return(0);
 }
コード例 #2
0
        private void getDisplayMode_CIM_VideoControllerResolution()
        {
            ManagementObjectCollection    instances = new ManagementClass("CIM_VideoControllerResolution").GetInstances();
            List <MainWindow.DisplayMode> list      = new List <MainWindow.DisplayMode>();
            uint num  = 0u;
            uint num2 = 0u;

            foreach (ManagementBaseObject managementBaseObject in instances)
            {
                ManagementObject managementObject = (ManagementObject)managementBaseObject;
                uint             nXX = (uint)managementObject["HorizontalResolution"];
                uint             nYY = (uint)managementObject["VerticalResolution"];
                if ((num != nXX || num2 != nYY) && (ulong)managementObject["NumberOfColors"] == 4294967296UL)
                {
                    MainWindow.DisplayMode displayMode = this.m_listDefaultDisplay.Find((MainWindow.DisplayMode i) => (long)i.Width == (long)((ulong)nXX) && (long)i.Height == (long)((ulong)nYY));
                    if (displayMode.Width != 0)
                    {
                        list.Add(displayMode);
                    }
                    num  = nXX;
                    num2 = nYY;
                }
            }
            MainWindow.DisplayModes item = default(MainWindow.DisplayModes);
            item.list = list;
            this.m_listCurrentDisplay.Add(item);
            if (instances.Count == 0)
            {
                System.Windows.Forms.MessageBox.Show("Failed to list screens");
                return;
            }
            if (this.m_listCurrentDisplay.Count == 0)
            {
                System.Windows.Forms.MessageBox.Show("Failed to list supported resolutions");
            }
        }
コード例 #3
0
        private void getDisplayMode_EnumDisplaySettings(int numDisplay)
        {
            DISPLAY_DEVICE display_DEVICE = default(DISPLAY_DEVICE);

            display_DEVICE.cb = Marshal.SizeOf(display_DEVICE);
            List <string> list = new List <string>();

            MainWindow.MonitorInfoEx[] monitors = MainWindow.GetMonitors();
            uint num = 0u;

            while (MainWindow.EnumDisplayDevices(null, num, ref display_DEVICE, 1u))
            {
                if ((display_DEVICE.StateFlags & DisplayDeviceStateFlags.AttachedToDesktop) == DisplayDeviceStateFlags.AttachedToDesktop)
                {
                    list.Add(display_DEVICE.DeviceName);
                }
                num += 1u;
            }
            int num2 = 0;
            int num3 = -1;

            foreach (string text in list)
            {
                int     num4    = 0;
                int     num5    = 0;
                DEVMODE devmode = default(DEVMODE);
                List <MainWindow.DisplayMode> list2 = new List <MainWindow.DisplayMode>();
                int num6 = 0;
                while (MainWindow.EnumDisplaySettings(text, num6, ref devmode))
                {
                    int nXX = devmode.dmPelsWidth;
                    int nYY = devmode.dmPelsHeight;
                    if ((num4 != nXX || num5 != nYY) && devmode.dmBitsPerPel == 32)
                    {
                        MainWindow.DisplayMode displayMode = this.m_listDefaultDisplay.Find((MainWindow.DisplayMode dis) => dis.Width == nXX && dis.Height == nYY);
                        if (displayMode.Width != 0)
                        {
                            list2.Add(displayMode);
                        }
                        num4 = nXX;
                        num5 = nYY;
                    }
                    num6++;
                }
                MainWindow.DisplayModes item = default(MainWindow.DisplayModes);
                foreach (MainWindow.MonitorInfoEx monitorInfoEx in monitors)
                {
                    if (monitorInfoEx.szDevice == text)
                    {
                        item.x = monitorInfoEx.rcWork.Left;
                        item.y = monitorInfoEx.rcWork.Top;
                        if (monitorInfoEx.dwFlags == 1)
                        {
                            num3 = num2;
                        }
                    }
                }
                item.list = list2;
                num2++;
                this.m_listCurrentDisplay.Add(item);
            }
            if (this.m_listCurrentDisplay.Count == 0 || this.m_listCurrentDisplay.Count != numDisplay)
            {
                System.Windows.Forms.MessageBox.Show("Failed to list supported resolutions");
            }
            this.m_listCurrentDisplay.Insert(0, this.m_listCurrentDisplay[num3]);
            this.m_listCurrentDisplay.RemoveAt(num3 + 1);
        }