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"); } }
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); }