Display Changer changes the resolution.
Display Changer runs your application. (optional)
Display Changer restores the original resolution. (optional)
Display Changer changes the display resolution, run a program, then restore the original settings. It can also change the resolution permanently and rearrange the monitors in a multiple monitor setup. I originally wrote this application for my children because they had programs that require 640x480 with 256 colors or 800x600 with 32-bit color or some other combination. I didn't expect my (then) 4-year-old to be able to change Windows display settings, so I wrote this program to do it automatically. Now, of course, it does much more.
Display Changer allows you to change your desktop width, height, color depth, and refresh rate (frequency) temporarily or permanently (via command line switches). You can have Display Changer run another application in a specific display resolution and return to the previous resolution when the application finishes. Command line switches let you alter only certain settings and choose the best refresh rate (or a specific one).
There are Windows and console editions for both 32-bit and 64-bit Windows. The Windows edition is best for creating shortcuts that quickly switch to the display configuration you want. The Console edition is best to use in a batch file or script.
Display Changer is free for personal and educational use. If you'd like to use it in a commercial environment (e.g., to use it with a product you sell or release internally), you must purchase a commercial license. In brief, a commercial license entitles your company to unlimited use of Display Changer (while prohibiting you from modifying it in any way).
Commercial License [PDF]
| -test | Does not apply new settings. Reports if the settings are valid or not. |
| -quiet | Eliminates any output the application would normally make. |
| -force | Try applying the settings even though Windows doesn't list them as available. |
| -more | Indicates there will be further calls to specify settings for additional monitors. That also means the settings will be permanent—stored in the Registry (until you change them again). You need to use this switch when repositioning multiple monitors. |
| -apply | Indicates there are no further calls and that all settings should be committed. |
| -reset | Discards any settings stored with -more (before -apply is used).
This can be useful when you're experimenting and change your mind about some settings. |
| -listmonitors | Display a list of your current monitors, including the monitor name (e.g., "Dell 2007FP (Digital)"), display name (e.g., "\\.\DISPLAY1"), and current resolution and position. You can use the friendly name as long as it's unique among your monitors, but if your monitors are all the same model, you will need to use the device name. It will also display the word "primary" if the monitor is the main display. |
| -monitor={name} | Specify which monitor to operate on. (If none is specified, the primary monitor is used.)
Please note that this switch cannot be used to control where the application
appears—that's something only the application can decide. For example:dccmd.exe -monitor="Dell 2007FP (Digital)" -width=1024 -height=768
|
These parameters apply to the
monitor specified with the -monitor switch
(or to the primary monitor if none is specified). | |
| -listmodes | Display all available resolutions
(width, height, color depth, and frequency).
You can use the -width, -height, -depth, and
-refresh switches to constrain the list to only those resolutions that match the specified value. |
| -width={ # | max } | Set the width of the specified monitor. If you don't specify a value, it uses the specified monitor's current value, so you almost always need to specify the height as well. If you pass "max" as the value, it will select the largest value that also matches the other settings you specify. |
| -height={ # | max } | Set the height of the specified monitor. If you don't specify a value, it uses the specified monitor's current value, so you almost always need to specify the width as well. If you pass "max" as the value, it will select the largest value that also matches the other settings you specify. |
| -depth={ # | max } | Set the color depth of the specified monitor. If you don't specify a value, it uses the specified monitor's current value. If you pass "max" as the value, it will select the largest value that also matches the other settings you specify. |
| -refresh={ # | max } | Set the refresh rate (display frequency) of the specified monitor. If you don't specify a value, it uses the specified monitor's current value. If you pass "max" as the value, it will select the largest value that also matches the other settings you specify. |
| -interlaced | Set the monitor to use an interlaced resolution. (This switch may not work as Microsoft has labeled it "invalid.") |
| -rotate={ left | right | up | down } | If your display supports this, it will rotate the display to the specified orientation. (Note: Unfortunately, my display only supports this via the nVidia Control Panel, so I can't test this option thoroughly.) |
| -detach | Remove the specified monitor from the display configuration.
(Add a new monitor to the configuration with the -primary or -secondary switches.) |
| -primary | Make the specified monitor the primary monitor.
(You will also need to use the -more switch to either detach the primary monitor or re-position it.) |
| -secondary | Make the primary monitor a secondary monitor. (A secondary monitor is one that isn't primary; even the third or fourth monitors are secondary.) When making a monitor secondary (i.e., not primary), you will almost certainly also have to specify its new position (relative to the new primary monitor), using one of the below switches. |
| -left | -right | -top | -bottom | Position the specified monitor on the specified side of the primary monitor.
(This is a faster and easier way to position a monitor.) Alternatively, you can use the -lx and -ty switches. |
| -lx=# | Position the specified monitor so its left side is at this x-coordinate (relative to the primary monitor). (Note that at least one pixel must be adjacent to another monitor for this to work.) |
| -ty=# | Position the specified monitor so its top side is at this y-coordinate (relative to the primary monitor). (Note that at least one pixel must be adjacent to another monitor for this to work.) |
For the following examples, assume a monitor configuration that has two monitors, a Dell 2009 (1440 x 900)—primary—and a Dell 2007 (1280x1024) on the right.
--> dccmd -listmonitors Monitor: Dell 2009W(Digital) Device: \\.\DISPLAY1 Adapter: NVIDIA GeForce 8600 GT (1440 x 900 x 32 bpp) 60Hz, attached, primary (0,0) Monitor: Dell 2007FP (Digital) Device: \\.\DISPLAY2 Adapter: NVIDIA GeForce 8600 GT (1280 x 1024 x 32 bpp) 60Hz, attached (1440,-128)
If you have an application that requires certain display settings (e.g., many children's programs require 640x480x256 colors), you can modify that program's shortcut to something like this:
dc.exe -width=640 -height=480 -depth=8 -refresh=72 "c:\Program Files\Hasbro\Freddi.exe"
This shortcut will change to VGA resolution, run freddi.exe, and then restore the original display settings when freddi.exe stops running. If you don't specify a program, it will just change the settings for you (and not restore them).
The "8" represents an 8-bit color depth or 256 colors. "4" is 16 colors; "16" for 16-bit; "24" for 24-bit; "32" for 32-bit.
Open a certain spreadsheet at 1600x1200:
dc.exe -width=1600 -height=1200 cmd /c "c:\Documents and Settings\Susan\Desktop\Report.xls"
-detach:
--> dccmd.exe -listmonitors Monitor: Dell 2009W(Digital) Device: \\.\DISPLAY1 Adapter: NVIDIA GeForce 8600 GT (1440 x 900 x 32 bpp) 60Hz, attached, primary (0,0) Monitor: Dell 2007FP (Digital) Device: \\.\DISPLAY2 Adapter: NVIDIA GeForce 8600 GT (1280 x 1024 x 32 bpp) 60Hz, attached (1440,-128) --> dccmd.exe -monitor="Dell 2007FP (Digital)" -detach --> dccmd.exe -listmonitors Monitor: Dell 2009W(Digital) Device: \\.\DISPLAY1 Adapter: NVIDIA GeForce 8600 GT (1440 x 900 x 32 bpp) 60Hz, attached, primary (0,0) Monitor: Dell 2007FP (Digital) Device: \\.\DISPLAY2 Adapter: NVIDIA GeForce 8600 GT (1600 x 1200 x 32 bpp) 60Hz
--> dccmd.exe -monitor="Dell 2007FP (Digital)" -width=1280 -height=1024 -ty=-128 -lx=1440 --> dccmd.exe -listmonitors Monitor: Dell 2009W(Digital) Device: \\.\DISPLAY1 Adapter: NVIDIA GeForce 8600 GT (1440 x 900 x 32 bpp) 60Hz, attached, primary (0,0) Monitor: Dell 2007FP (Digital) Device: \\.\DISPLAY2 Adapter: NVIDIA GeForce 8600 GT (1280 x 1024 x 32 bpp) 60Hz, attached (1440,-128)If you don't specify the size, it will use the native resolution of the monitor.
dccmd.exe -monitor="Dell 2009W(Digital)" -left
-more switch when configuring more than one monitor. For the last configuration, specify -apply.)
--> dccmd.exe -monitor="Dell 2007FP (Digital)" -more -primary
You will need to use the -apply switch to activate the changes.
--> dccmd.exe -monitor="Dell 2009W(Digital)" -apply -secondary -lx=-1280 -ty=128
Normally, Display Changer will prevent you from using a mode that is not
supported by your video card and monitor. You can use the -force
switch to use an unlisted video mode.
Please be aware that you can damage your video card or monitor by using an
unsupported mode. 12noon assumes no responsibility or liability for your use
of Display Changer.
Sometimes, even with -force, Windows won't let it use that resolution.
You can sometimes work around that by going to Display Properties > Settings > Advanced > Monitor.
On that page, clear the Hide modes that this monitor cannot display check box.
Display Changer runs on Microsoft® Windows® Vista (32-bit and 64-bit), XP Home and Professional (32-bit and 64-bit), and Windows Server 2003 and 2008 (32-bit and 64-bit). It should also run on Windows 2000, Me, NT, and 98, but I'm no longer able to test it on those platforms.