示例#1
0
        /// <summary>Gets the available resolutions for a display device.</summary>
        public IEnumerable <Size> GetResolutions(string?deviceName = null)
        {
            WindowsApi.DEVMODEW mode = new WindowsApi.DEVMODEW();
            mode.Init();

            uint modeNum = 0;

            while (WindowsApi.EnumDisplaySettingsEx(deviceName, modeNum++, ref mode, 0))
            {
                yield return(new Size((int)mode.dmPelsWidth, (int)mode.dmPelsHeight));
            }
        }
示例#2
0
        private static Size Resolution(Size?newSize, string?deviceName = null)
        {
            WindowsApi.DEVMODEW mode = new WindowsApi.DEVMODEW();
            mode.Init();
            // When setting, the current display still needs to be retrieved, to pre-fill the mode struct.
            WindowsApi.EnumDisplaySettingsEx(deviceName, WindowsApi.ENUM_CURRENT_SETTINGS, ref mode, 0);
            Size originalSize = new Size((int)mode.dmPelsWidth, (int)mode.dmPelsHeight);

            if (newSize.HasValue)
            {
                const uint CDS_UPDATEREGISTRY = 1;
                mode.dmPelsWidth  = (uint)newSize.Value.Width;
                mode.dmPelsHeight = (uint)newSize.Value.Height;
                WindowsApi.ChangeDisplaySettingsEx(deviceName, ref mode, IntPtr.Zero, CDS_UPDATEREGISTRY, IntPtr.Zero);
            }

            return(originalSize);
        }