Updates

Get e-mails with new posts.

Web Site

Display Changer II

11 Display Changer II changes the resolution.

1 Display Changer II runs your application. (optional)

1 Display Changer II restores the original resolution. (optional)

Like Display Changer, Display Changer II changes your display resolution, runs a program, then restores the original settings. This is useful for games and home theater computers. I originally wrote this application for my children because they had programs that required 640×480 with 256 colors or 800×600 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, Display Changer II does much more. It can change the resolution permanently and rearrange the monitors in a multiple-monitor setup. This application can also duplicate (clone) your monitors, extend the desktop to multiple monitors, configure only the primary PC screen, and configure only the secondary screen. Instead of switches, Display Changer II uses configuration files to specify display settings. It can create configuration files from existing settings, which eliminates the need for you to edit the files yourself.

Display Changer II changes your desktop width, height, color depth, refresh rate, and rotation temporarily or permanently (via a configuration file). Display Changer II can run another application in a specific display resolution and return to the previous resolution when the application finishes. The configuration file lets you specify every setting for every monitor, including the very precise refresh rates needed for home-theater systems.

Download (32- and 64-bit Windows 10, 8.1, and later)

Download 1.5.0 (32- and 64-bit Windows 7)

This ZIP file contains both 32-bit (x86) and 64-bit (x64) Windows executables. This way, you can easily create shortcuts that quickly change to the display configuration you want. There’s a command-line switch to direct all output to the clipboard (instead of a window), so you can also use Display Changer II in a command-line batch file or script using the Command Prompt or PowerShell.

Commercial License

Display Changer II is free for non-profit personal or educational use. If you’d like to use it in a commercial environment (e.g., to release with a product you sell, to release with a product you use internally, or to manage your organization’s computers), you must purchase a commercial license. In brief, a commercial license entitles your company to unlimited use of Display Changer II.

Please note that even if you purchased a commercial license for Display Changer, you will need to purchase a separate commercial license for Display Changer II.

Commercial License



Resellers: please contact me directly for pricing.

Usage

dc2.exe switches command-line (optional)

If a command line is specified, Display Changer II will open that application after changing your monitor configuration. In that case, the specified configuration is only temporary because the current configuration is restored after the application exits. This is very useful if you want to run a specific application in a different configuration (e.g., a larger or smaller resolution) but want to return to your desired configuration after you’re finished with the application.

Switches

-create="{path}" This switch will create a configuration file that represents the current display configuration. This is an easy way to create the configuration file that you can use to change to this configuration.
-active When creating a configuration file, use the current display settings instead of the ones
that Windows has stored. This switch is useful in unusual cases where the configuration
stored by Windows has become corrupted but the video driver has adjusted it to present
a valid, current configuration. (Basically, if DC2 doesn’t create a valid configuration file without this switch, try using it.)
-configure="{path}" Change the displays to the configuration represented by the specified configuration file.
-clone Sets the monitor configuration to clone the primary display to all secondary monitors.
-extend Sets the monitor configuration to extend the desktop across all monitors.
-primary Sets the monitor configuration to use only the main PC screen (e.g., the laptop display).
-secondary Sets the monitor configuration to use only the secondary display (e.g., the projector).
-force If the specified configuration will not work as it is, this tells Windows to reset the video driver when updating the display settings.
-no-optimize If the specified configuration will not work as it is, this tells Windows not to ignore some of the settings, such as when they’re the same as the current settings.
-fuzzy If the specified configuration will not work as it is, this allows Windows to make some changes to the settings in order to make it succeed.
-temporary Indicates that the specified configuration should not be permanent. You can return to the previous configuration by using the -restore switch.
-restore Change to the previously-saved configuration (i.e., a configuration that was set without using the -temporary switch). This can be used after using the -temporary switch to change to a configuration that should not be saved.
-test[="{path}"] This reports whether the specified settings are valid. If the optional path is specified, it will also create a configuration file representing the configuration that it would have used. This can be useful in verifying that Display Changer II has interpreted your configuration file correctly. If you contact Support, please create a file using this switch and e-mail it with your issue.
-clipboard Sends all output to the clipboard instead of using Windows message boxes.
-list="{path}" Create an XML file with all available resolutions (width, height, color depth, and frequency).
-debug="{path}" Create an XML file with detailed information that you can send to Support to help aid in troubleshooting. If you contact Support, please create a file using this switch and e-mail it with your issue.
-fullscreen If an application command line is specified, open the application in full-screen mode (i.e., maximized).

Examples

Create a Configuration File

  1. Use Windows Control Panel’s Display to configure your monitors the way you like them.
  2. Use Display Changer II’s -create switch to create a configuration file.
  3. > dc2.exe -create="ThreeMonitors.xml"
  4. Use Windows Control Panel’s Display to configure your monitors to some other configuration.
  5. Use Display Changer II’s -configure switch to re-establish your desired configuration.
  6. > dc2.exe -configure="ThreeMonitors.xml"

You now have a configuration file that you can use whenever you want to establish that specific display configuration. You can follow the same steps to create additional configuration files.

Use an Application in a Custom Configuration

You can use Display Changer II to open an application in its own custom configuration. This is useful for large spreadsheets, certain games-\-especially children’s games, browsers, etc.

dc2.exe -configure="MySettings.xml" notepad.exe

dc2.exe -configure="Extended.xml" C:\Windows\Notepad.exe "MyData.txt"

dc2.exe -configure="MySettings.xml" -fullscreen notepad.exe "C:\Users\John\Documents\Report.txt"

Temporary Configurations

You can establish a temporary configuration for a certain task and then return to the original configuration whenever you’re finished. This is useful for home-theater systems, spreadsheets, gaming, etc.

  1. dc2.exe -configure="TemporaryConfiguration.xml" -temporary
  2. (do your task in this configuration)
  3. dc2.exe -restore

Additional Switches

dc2.exe -extend

dc2.exe -clone

dc2.exe -primary

Troubleshooting

Try using the -test switch to see if Windows can accept the configuration.

dc2.exe -configure="ThreeMonitors.xml" -test

Try using the -active switch to see if it will create a valid configuration file.

dc2.exe -create="ThreeMonitors.xml" -active

Try using the -force, -no-optimize, and -fuzzy switches when setting a new configuration. Create these troubleshooting files, contact 12noon.com’s Support, and also e-mail these files.

dc2.exe -configure="ThreeMonitors.xml" -test="ThreeMonitors_Test.xml"
dc2.exe -debug="Debug.xml"

Try using your command line with notepad.exe (instead of whatever application you’re passing to Display Changer II). If it works with Notepad, but not with your application, the issue is with your application, not DC2.

Some applications, such as Steam, use other processes after they start. Display Changer II is unaware of these other processes, so if the executable specified on specified on its command line exits, DC2 restores the resolution. Also, many programs, especially games, set their own resolution and override whatever DC2 might have set. Test your command line with a simpler program (as described above) to determine if this is the issue. If it is, you can work around it by figuring out the command line your application uses to run this other process and specify that on DC2’s command line (which is difficult and cumbersome). Or you can create a batch file to switch to your custom resolution, run the application, then restore the resolution (which is easier and cleaner).

Example Contents of RunMyApp.cmd

start /wait dc2.exe -configure="MySpecialApp.xml" -temporary
start /wait my_special_app.exe
dc2.exe -restore

Alternatively, you can create multiple shortcuts for each of these commands and invoke them manually.

Configuration File Format

A configuration file is a non-strict XML file. You can use the -create switch to generate a configuration file from the current display settings. This is the recommended method because it is guaranteed to be in the correct file format. You can then easily modify the file to the desired configuration.

<monitors app-version="#.#.#" version="#" topology="Extend | Clone | External | Internal">
   <monitor id="#" adapterHigh="0" adapterLow="#">
      <name>MONITOR NAME</name>
      <source id="#">
            <name>\\.\DISPLAY#</name>
            <path>\\?\PCI#VEN_10DE&DEV_1189&SUBSYS_84141043&REV_A...</path>
      </source>
      <size width="#" height="#" />
      <position left="#" top="#" />
      <color value="8bpp | 16bpp | 24bpp | 32bpp | Non-GDI" />
      <rotation value="Identity | 90-degreesCW | 180-degreesCW | 270-degreesCW" />
      <scaling value="Identity | Centered | Stretched | Aspect Ratio Centered Max | Custom | Preferred" />
      <refresh numerator="#" denominator="#" />
      <scanlineorder value="Unspecified | Progressive | Interlaced (upper field first) | Interlaced (lower field first)" />
   </monitor>
</monitors>

<monitors>
app-version="#"
The version of Display Changer II that created this file.
version="#"
The version of this file format. In the future, it’s possible that the file format will change and it will be incompatible with older versions of Display Changer II.
topology="TTT"
The topology of this configuration. This isn’t used when setting a configuration; it’s only to describe the current configuration.

Possible values: Extend, Clone, External, Internal

<monitor>
id="#"
Specify which monitor to operate on. You must specify either the name attribute or the id attribute to identify a monitor. If there is more than one monitor with the same name, you must use the id attribute to identify it.

This value is (or seems to be) unique to all monitors. However, I have not tested a PC with multiple video cards yet, and it’s possible that it will be unique only for a single video card. But, if that’s the case, it seems as if it would be impossible to uniquely identify a single monitor.

adapterHigh="0"
This value seems to always be zero. It will likely be removed in a future release.
adapterLow="#"
This value can change between instances of Display Changer II, so it seems that it cannot be used to uniquely identify a monitor or video card. It will likely be removed in a future release.
<name>MONITOR NAME</name>
The name of the monitor associated with these settings. If there is more than one monitor with the same name, you must use the id attribute to identify it.
<source id="#">
This specifies the source of this monitor’s video signal. Cloned monitors have the same source ID.
id="#"
This value represents the video output that displays on this monitor.
<name />
This is the name of the video output. It may be removed in a future release.
<path />
This is the device path of the video adapter.
<size width="#" height="#" />
This specifies the width and height of the monitor’s display.
<position left="#" top="#" />
This specifies the location of this monitor’s display as the x- and y-coordinates of the left and top edges. The primary display is always at (0,0).
<color value="AAA" />
This specifies the color depth (bits-per-pixel) of this monitor’s display.

Possible values: 8bpp, 16bpp, 24bpp, 32bpp, Non-GDI

<rotation value="RRR" />
This specifies the orientation of this monitor’s display.

Possible values: Identity, 90-degreesCW, 180-degreesCW, 270-degreesCW

<scaling value="SSS" />
This specifies how the image will be adjusted to fit on the screen. From the Microsoft documentation:

“The scaling … is a scaling intent rather than an explicit request to perform a scaling operation. If scaling is required (for example, source and target resolutions differ), [Windows] uses the scaling that the caller supplies. If the supplied scaling is not supported, [Windows] uses the graphics adapter’s default scaling. When the source and target resolutions that the caller passes to [Windows] are the same, [Windows] always sets identity scaling.”

Possible values: Identity, Centered, Stretched, Aspect Ratio Centered Max, Custom, Preferred

<refresh numerator="#" denominator="#" />
This specifies the frequency of this monitor’s display. In order to specify a rational number, the refresh rate is expressed as a fraction: a numerator and a denominator. If you specify 0/0, Windows will use the optimal refresh rate, but you must also specify Unspecified for the scan-line-order. (See below.)
<scanlineorder value="SSS" />
This specifies the scan-line ordering of this monitor’s display. If you specify 0/0 for the refresh rate, you must also set this to Unspecified.

Possible values: Unspecified, Progressive, Interlaced (upper field first), Interlaced (lower field first)

Requirements

Display Changer II runs on Microsoft® Windows® 10 and 8.1. (It should also run on Windows 7, but since Microsoft has ended mainstream support, it’s not officially supported.) Display Changer II has both 32-bit and 64-bit executables.

History

1.5.3: Removed unnecessary guard used in debugging.
1.5.2: Fixed potential crash when using the -debug switch and there’s an invalid display mode.
1.5.1: Added detail to an error message.
1.5.0: Fixed bug with -extend, -clone, -secondary, and -primary switches. Improved usage message.
1.4.1: Fixed launching window in normal mode.
1.3.2: Added -force and -no-optimize. Additional error messages. Improved usage message.
1.2.1: Fixed issue with multiple video cards. Added -active, -list, and -debug switches. Added 64-bit version.
1.0.5: Fixed issue with switching between clone and extended modes on three monitors.
1.0.4: Fixed issue with cloning two monitors.
1.0.3: Fixed clone and extend. Added -primary and -secondary switches.
1.0.2: Implemented opening a specified application and the -fullscreen switch.
1.0.0: Alpha release