public Monitor(Win32.DISPLAY_DEVICE device, Win32.DEVMODE currentDisplaySettings, List<Win32.DEVMODE> availableDisplaySettings) { Device = device; AvailableDisplaySettings = availableDisplaySettings; CurrentDisplaySettings = currentDisplaySettings; IsPrimary = CurrentDisplaySettings.dmPositionX == 0 && CurrentDisplaySettings.dmPositionY == 0; }
private static List <Win32.DISPLAY_DEVICE> EnumerateDesktopDisplayDevices() { var displayDevices = new List <Win32.DISPLAY_DEVICE>(); /* Keep looping through device indicies with i until we are done */ for (uint i = 0; ; i++) { Win32.DISPLAY_DEVICE displayDevice = new Win32.DISPLAY_DEVICE(); const uint displayFlags = Win32.EDD_GET_DEVICE_INTERFACE_NAME; displayDevice.cb = Marshal.SizeOf(displayDevice); bool deviceAvailable = Win32.EnumDisplayDevices(null, i, ref displayDevice, displayFlags); /* If EnumDisplayDevices returns 'false' for a given device number, i, then * there are no more devices. */ if (!deviceAvailable) { break; } /* Only retrieve monitors that are actually attached to the desktop */ if ((displayDevice.StateFlags & Win32.DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) == Win32.DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) { displayDevices.Add(displayDevice); } } return(displayDevices); }
public Monitor(Win32.DISPLAY_DEVICE device, Win32.DEVMODE currentDisplaySettings, List <Win32.DEVMODE> availableDisplaySettings) { Device = device; AvailableDisplaySettings = availableDisplaySettings; CurrentDisplaySettings = currentDisplaySettings; IsPrimary = CurrentDisplaySettings.dmPositionX == 0 && CurrentDisplaySettings.dmPositionY == 0; }
private void DisplayDebugInfo() { StringBuilder debug = new StringBuilder(); foreach (Display.Monitor monitor in _Monitors) { Win32.DISPLAY_DEVICE device = monitor.Device; debug.AppendFormat("DeviceName: {0}{1}", device.DeviceName, Environment.NewLine); debug.AppendFormat("DeviceString: {0}{1}", device.DeviceString, Environment.NewLine); debug.AppendFormat("DeviceString: {0}{1}", device.StateFlags, Environment.NewLine); debug.AppendFormat("DeviceID: {0}{1}", device.DeviceID, Environment.NewLine); debug.AppendFormat("DeviceKey: {0}{1}", device.DeviceKey, Environment.NewLine); Win32.DEVMODE currMode = monitor.CurrentDisplaySettings; debug.AppendFormat("Resolution: {0}x{1}x{2}{3}", currMode.dmPelsWidth, currMode.dmPelsHeight, currMode.dmBitsPerPel, Environment.NewLine); debug.AppendFormat("Refresh Rate: {0}hz{1}", currMode.dmDisplayFrequency, Environment.NewLine); debug.AppendFormat("Position:{0}", Environment.NewLine); debug.AppendFormat(" X: {0}{1}", currMode.dmPositionX, Environment.NewLine); debug.AppendFormat(" Y: {0}{1}", currMode.dmPositionY, Environment.NewLine); debug.AppendFormat("Available Modes: {0}", Environment.NewLine); foreach (Win32.DEVMODE mode in monitor.AvailableDisplaySettings) { Win32.DEVMODE curr = monitor.CurrentDisplaySettings; bool selected = false; if (mode.dmPelsWidth == curr.dmPelsWidth && mode.dmPelsHeight == curr.dmPelsHeight && mode.dmPelsWidth == curr.dmPelsWidth && mode.dmBitsPerPel == curr.dmBitsPerPel && mode.dmDisplayFrequency == curr.dmDisplayFrequency) { selected = true; } debug.AppendFormat(" {0}x{1}x{2} {3}hz {4}:{5} {6}{7}", mode.dmPelsWidth, mode.dmPelsHeight, mode.dmBitsPerPel, mode.dmDisplayFrequency, mode.dmPositionX, mode.dmPositionY, selected ? "<--" : "", Environment.NewLine); } debug.Append(Environment.NewLine); } DebugText.Text = debug.ToString(); }
private static List<Win32.DISPLAY_DEVICE> EnumerateDesktopDisplayDevices() { var displayDevices = new List<Win32.DISPLAY_DEVICE>(); /* Keep looping through device indicies with i until we are done */ for (uint i = 0; ; i++) { Win32.DISPLAY_DEVICE displayDevice = new Win32.DISPLAY_DEVICE(); const uint displayFlags = Win32.EDD_GET_DEVICE_INTERFACE_NAME; displayDevice.cb = Marshal.SizeOf(displayDevice); bool deviceAvailable = Win32.EnumDisplayDevices(null, i, ref displayDevice, displayFlags); /* If EnumDisplayDevices returns 'false' for a given device number, i, then * there are no more devices. */ if (!deviceAvailable) break; /* Only retrieve monitors that are actually attached to the desktop */ if ((displayDevice.StateFlags & Win32.DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) == Win32.DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) { displayDevices.Add(displayDevice); } } return displayDevices; }