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); }
public static extern int ChangeDisplaySettings(ref DEVMODE1 devMode, int flags);
public static extern int EnumDisplaySettings(string deviceName, int modeNum, ref DEVMODE1 devMode);