public static ScreenEx GetScreenSettings(Forms.Screen screen) { ScreenSettingsDevMode DevMode = new ScreenSettingsDevMode(true); if (EnumDisplaySettings(screen.DeviceName, -1 /*current settings*/, ref DevMode) == 0) throw new Exception("EnumDisplaySettings (user32.dll) returned 0"); ScreenEx screenSettings = new ScreenEx(screen, DevMode); return screenSettings; }
/// <summary> /// <para>Create a new instance of <see cref="ScreenEx"/></para> /// </summary> /// <param name="screen"></param> /// <param name="devMode">A <see cref="ScreenSettingsDevMode"/> received from <see cref="Status.Screen.EnumDisplaySettings"/></param> public ScreenEx(Forms.Screen screen, ScreenSettingsDevMode devMode) : base(screen.DeviceName) { this.Type = DeviceType.Screen; this.Name = screen.DeviceName; this.BitsPerPixel = (byte)screen.BitsPerPixel; this.Bounds = new Rectangle(screen.Bounds.Location, screen.Bounds.Size); this.Primary = screen.Primary; this.SpecVersion = devMode.dmSpecVersion; this.DriverVersion = devMode.dmDriverVersion; this.FixedOutput = (FixedOutput)devMode.dmDisplayFixedOutput; this.LogPixels = devMode.dmLogPixels; this.ColorDepth = (ColorDepth)devMode.dmBitsPerPel; this.DisplayFlags = devMode.dmDisplayFlags; this.Frequency = (byte)devMode.dmDisplayFrequency; this.Orientation = (ScreenOrientation)devMode.dmDisplayOrientation; this.fields = 0; }
/// <summary> /// <para>Converts this class to a <see cref="ScreenSettingsDevMode"/> struct which then may be used to update the settings</para> /// </summary> /// <returns></returns> public ScreenSettingsDevMode ToDEVMODE() { ScreenSettingsDevMode devMode = new ScreenSettingsDevMode(true); devMode.dmBitsPerPel = this.BitsPerPixel; devMode.dmDeviceName = this.Name; devMode.dmDisplayFixedOutput = (int)this.FixedOutput; devMode.dmDisplayFlags = this.DisplayFlags; devMode.dmDisplayFrequency = this.Frequency; devMode.dmDisplayOrientation = (int)this.Orientation; devMode.dmDriverVersion = this.DriverVersion; devMode.dmFields = (int)this.fields; devMode.dmFormName = ""; devMode.dmLogPixels = this.LogPixels; devMode.dmPelsHeight = this.Bounds.Height; devMode.dmPelsWidth = this.Bounds.Width; devMode.dmPositionX = this.Bounds.X; devMode.dmPositionY = this.Bounds.Y; devMode.dmSpecVersion = this.SpecVersion; devMode.dmSize = (short)Systemm.Runtime.InteropServices.Marshal.SizeOf(devMode); return(devMode); }
/// <summary> /// <para>Converts this class to a <see cref="ScreenSettingsDevMode"/> struct which then may be used to update the settings</para> /// </summary> /// <returns></returns> public ScreenSettingsDevMode ToDEVMODE() { ScreenSettingsDevMode devMode = new ScreenSettingsDevMode(true); devMode.dmBitsPerPel = this.BitsPerPixel; devMode.dmDeviceName = this.Name; devMode.dmDisplayFixedOutput = (int)this.FixedOutput; devMode.dmDisplayFlags = this.DisplayFlags; devMode.dmDisplayFrequency = this.Frequency; devMode.dmDisplayOrientation = (int)this.Orientation; devMode.dmDriverVersion = this.DriverVersion; devMode.dmFields = (int)this.fields; devMode.dmFormName = ""; devMode.dmLogPixels = this.LogPixels; devMode.dmPelsHeight = this.Bounds.Height; devMode.dmPelsWidth = this.Bounds.Width; devMode.dmPositionX = this.Bounds.X; devMode.dmPositionY = this.Bounds.Y; devMode.dmSpecVersion = this.SpecVersion; devMode.dmSize = (short)Systemm.Runtime.InteropServices.Marshal.SizeOf(devMode); return devMode; }
/// <summary> /// <para>The ChangeDisplaySettingsEx function changes the settings of the specified display device to the specified graphics mode.</para> /// <para>Use this one if you are not sure</para> /// </summary> /// <param name="deviceName"> /// <para>String that specifies the display device whose graphics mode will change. Only display device names as returned by EnumDisplayDevices are valid.</para> /// <para>The <paramref name="deviceName"/> parameter can be NULL. A NULL value specifies the default display device. The default device can be determined by calling EnumDisplayDevices and checking for the DISPLAY_DEVICE_PRIMARY_DEVICE flag.</para> /// </param> /// <param name="devMode"><para>A pointer to a <see cref="ScreenSettingsDevMode"/> structure that describes the new graphics mode. If <paramref name="devMode"/> is NULL, all the values currently in the registry will be used for the display setting. Passing NULL for the <paramref name="devMode"/> parameter and 0 for the <paramref name="dwFlags"/> parameter is the easiest way to return to the default mode after a dynamic mode change.</para></param> /// <param name="dwFlags"></param> /// <returns></returns> internal static DispChange ChangeDisplaySettingsEx(string deviceName, ref ScreenSettingsDevMode devMode, CDS dwFlags) { return (DispChange)ChangeDisplaySettingsEx(deviceName, ref devMode, IntPtr.Zero, (int)dwFlags, IntPtr.Zero); }
internal static extern int ChangeDisplaySettingsEx(string lpszDeviceName, ref ScreenSettingsDevMode lpDevMode, IntPtr hwnd, int dwFlags, IntPtr lParam);
private static extern int EnumDisplaySettings(string lpszDeviceName, int iModeNum, ref ScreenSettingsDevMode lpDevMode);