private static void InitializeSupportedDisplayModes()
        {
            var stop  = false;
            var index = 0;

            while (!stop)
            {
                DEVMODE1 dm = new DEVMODE1();
                dm.dmDeviceName = new String(new char[32]);
                dm.dmFormName   = new String(new char[32]);
                dm.dmSize       = (short)Marshal.SizeOf(dm);

                var ret = NativeMethods.EnumDisplaySettings(null, index, ref dm);
                index++;

                if (ret == 0)
                {
                    stop = true;
                }
                else
                {
                    if (dm.dmDisplayFrequency >= 60 && dm.dmBitsPerPel >= 30)
                    {
                        if (!SupportedDisplayModes.ContainsKey(dm.ToString()))
                        {
                            SupportedDisplayModes.Add(dm.ToString(), dm);
                        }
                    }
                }
            }
        }
        public static bool ChangeResolution(ref DEVMODE1 mode)
        {
            int iRet = NativeMethods.ChangeDisplaySettings(ref mode, NativeMethods.CDS_TEST);

            if (iRet == NativeMethods.DISP_CHANGE_FAILED)
            {
                return(false);
            }

            iRet = NativeMethods.ChangeDisplaySettings(ref mode, NativeMethods.CDS_NONE);

            switch (iRet)
            {
            case NativeMethods.DISP_CHANGE_SUCCESSFUL:
                break;

            case NativeMethods.DISP_CHANGE_RESTART:
            //windows 9x series you have to restart
            default:
                return(false);
            }

            return(true);
        }
Beispiel #3
0
 public static extern int ChangeDisplaySettings(ref DEVMODE1 devMode, int flags);
Beispiel #4
0
 public static extern int EnumDisplaySettings(string deviceName, int modeNum, ref DEVMODE1 devMode);