I am a gamer, and I like to run my games in "borderless windowed mode", at least all the games that support this. The reason is that I like to be able to simply move the mouse from my main gaming screen over to one of my other two screens, and control my web browser, or discord, or whatever.

I have 3x 4K monitors, and though I have a good graphics card, not all games are capable of running smoothly in 4K. If I want to keep using borderless windowed mode, before running those games I have to switch my monitor into a lower resolution using the display settings. What I mean is that I have 1 centre monitor that I will change the resolution of, and keep the other two in 4K, to display websites, discord, Facebook Messenger, etc. etc.

I would like to automate this, and I've tried writing my own code to do it, but there is some automagical thing happening with the positioning of the monitors, meaning that which monitor is considered the one on the left, the one on the right, and the one in the centre, I'm currently unable to make this be the right settings.

So my question is simple.

Is there some desktop application package that lets me set up profiles for how my 3 monitors should be configured, when it comes to the resolution of those monitors, their relative position (aka, which one is left, right and centre) and the font size?

Note that I'm not specifically asking for freeware, it can be anything from a free utility, even command line utilities, up to paid software packages.

1 Answer 1


All of these settings are stored in the windows registry. If you can use google (or etc) to locate these settings you back up the necessary registry keys into different .reg files. Somethings you may need to use VBS or powershell to automated.

Alternatively: (power shell scripting)

The script file found here: https://stackoverflow.com/questions/37678996/setting-screen-resolution-on-windows-10 In the answer written by @Sachin does change the resolution of the current display.

I am sure it could be modified to change the resolution for other monitors.

if (0 != NativeMethods.EnumDisplaySettings(@"\\.\DISPLAY1", NativeMethods.ENUM_CURRENT_SETTINGS, ref dm)) 
            dm.dmPositionX = x;
            dm.dmPositionY = y;

if (0 != NativeMethods.EnumDisplaySettings(@"\\.\DISPLAY2", NativeMethods.ENUM_CURRENT_SETTINGS, ref dm)) 
            dm.dmPositionX = x;
            dm.dmPositionY = y;

For the function enumdisplaysettings The first parameter is the device, so you should be able to use that parameter to loop through all of your monitors.

  • This uses the same approach as I've already tried, and I can easily change the resolution or font size of a single monitor, the issue is that the order of the monitors is changed, so moving the mouse cursor from left to right won't go across the monitors from left to right. There either has to be some sort of "I will start updating everything now, so please hold" type of setting I can set, or a specific magical order that the monitors must be updated in, but I haven't been able to find it. Hence, my search for some software that already does this correctly. Commented Nov 11, 2020 at 20:31
  • superuser.com/a/1358188/213252 This answer has a script on how to move the primary monitor, and it probably can be adapted for others.
    – cybernard
    Commented Nov 11, 2020 at 20:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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