Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

There is a problem with nvidia drivers and reported monitor EDID: Monitors native resolution is 1920x1080 32bpp 60Hz, but for some reason it displays only portion of entire desktop (overscan/underscan) and image is blurry so I created custom resolution of 1920x1080 32bpp 59Hz CVT-reduced-bank that works fine.

The problem is when HDMI cable is connected windows automatically chooses wrong native resolution istead custom resolution. How can I set custom resolution to be default one ? So when computer boots up with HDMI monitor connected it will default to custom resolution.

Or is there command that I can execute to switch to custom resolution instead of using nvidia control panel ? In that case is there HDMI-connected-event that i can hook somehow to execute that command ?


share|improve this question
up vote 0 down vote accepted

I have found control panel API here: The following command is not working:

rundll32.exe NvCpl.dll,dtcfg setmode 2 1920 1080 32 59

This discussion reveals this approach is no longer supported :(

The solution is to make application that uses NvAPI_DISP_* functions to make appropriate changes.

- NvAPI_DISP_GetTiming() // with NV_TIMING_OVERRIDE_CVT_RB parameter set
- NvAPI_DISP_TryCustomDisplay()
- NvAPI_DISP_SaveCustomDisplay()

Only thing left is to run this program when HDMI is connected: Here (missing reputation) is how to find device class GUID for the graphic adapters. Then use RegisterDeviceNotification() function to register for getting WM_DEVICECHANGE notification.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.