// Arguments // int width : Desired Width in pixels // int height : Desired Height in pixels // int deviceIDIn : DeviceID of the monitor to be changed. DeviceID starts with 0 representing your first // monitor. For Laptops, the built-in display is usually 0. static public string ChangeResolution(int width, int height, int deviceIDIn) { var d = GetDeviceByNo(deviceIDIn); DEVMODE dm = GetDevMode(); //Attempt to change settings if (0 != User_32.EnumDisplaySettingsEx(d.DeviceName, User_32.ENUM_CURRENT_SETTINGS, ref dm, 0)) { dm.dmPelsWidth = width; dm.dmPelsHeight = height; int iRet = User_32.ChangeDisplaySettingsEx(d.DeviceName, ref dm, IntPtr.Zero, ChangeDisplaySettingsFlags.CDS_TEST, IntPtr.Zero); if (iRet == (int)DISP_CHANGE.FAILED) { return("Unable To Process Your Request. Sorry For This Inconvenience."); } else { iRet = User_32.ChangeDisplaySettingsEx(d.DeviceName, ref dm, IntPtr.Zero, ChangeDisplaySettingsFlags.CDS_UPDATEREGISTRY, IntPtr.Zero); switch (iRet) { case (int)DISP_CHANGE.SUCCESSFUL: { return("Success"); } case (int)DISP_CHANGE.RESTART: { return("You Need To Reboot For The Change To Happen.\n If You Feel Any Problem After Rebooting Your Machine\nThen Try To Change Resolution In Safe Mode."); } default: { return("Failed To Change The Resolution."); } } } } else { return("Failed To Change The Resolution."); } }
public static extern int ChangeDisplaySettingsEx(string lpszDeviceName, ref DEVMODE lpDevMode, IntPtr hwnd, ChangeDisplaySettingsFlags dwflags, IntPtr lParam);
public static extern int EnumDisplaySettingsEx(string lpszDeviceName, int iModeNum, ref DEVMODE lpDevMode, uint dwFlags);