Display Changer II 1.8.9

Display Changer II has been superseded by Display Changer X.

Existing customers: If you have purchased a license for Display Changer II and need to download the software again, please use the Support page to contact us, and we will send you a custom link.

Change the resolution of any Windows display (width, height, color depth, refresh rate, scaling, and rotation) permanently or only while a specific application is running. Display Changer II can also clone (duplicate), extend, add, detach, and rearrange the displays in a multiple-monitor setup. It can even configure your multiple monitors for AMD Eyefinity (so you don’t need to bother with the AMD Control Center). This is useful for presentations with laptops as well as games and home-theater computers. Display Changer II uses XML files to specify your monitor configurations. This can be an advantage over Display Changer, which uses command-line switches to specify settings and must be run once for each monitor.

  1. Display Changer II configures your monitors.
  2. Display Changer II runs your application. (optional)
  3. Display Changer II restores the original configuration. (optional)

Display Changer II changes your Windows display resolution, runs a program, then restores the original settings. This is useful for games and home-theater computers. I wrote Display Changer II because many programs run best under a particular resolution (e.g., 640×480 with 8-bit color depth or 1920×1080 with a 24 Hz refresh rate). I grew tired of manually changing the Windows display settings manually, so I wrote Display Changer II to do it automatically.

Display Changer II changes your Windows 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. It can change the resolution permanently and rearrange the monitors in a multiple-monitor setup. Display Changer II can also duplicate (clone) your monitors, extend the desktop to multiple monitors, configure only the primary PC screen, and configure only the secondary screen.

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. The configuration file specifies every setting for each monitor, including the very precise refresh rates needed for home-theater systems.

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 script using the Command Prompt or PowerShell.

Screen sharing using Teams on Ultrawide Monitors

— by Denzil Fernandes

(Unfortunately, Display Changer II cannot modify the Windows DPI (scaling factor) or HDR settings. There is currently no Microsoft API that offers these features. Although some applications hack at the Registry to modify the DPI, they require the user to restart Windows, which Display Changer II tries to avoid. If Microsoft does offer these features at some point, I plan to update Display Changer X to take advantage of them.)

Requirements

Display Changer II supports Microsoft® Windows® 11 and 10.

Usage

dc2.exe switches [command-line]

A command line is optional, and if 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.
-activeWhen 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.
-cloneSets the monitor configuration to clone the primary display to all secondary monitors.
-extendSets the monitor configuration to extend the desktop across all monitors.
-primarySets the monitor configuration to use only the main PC screen (e.g., the laptop display).
-secondarySets the monitor configuration to use only the secondary display (e.g., the projector).
-forceIf the specified configuration will not work as it is, this tells Windows to reset the video driver when updating the display settings.
-no-optimizeIf 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.
-fuzzyIf 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.
-temporaryIndicates that the specified configuration should not be permanent. You can return to the previous configuration by using the -restore switch.
-restoreChange 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.
-clipboardSends 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.
-fullscreenIf 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)

History

1.8.1: Output more information regarding clone groups.
1.8.0: Updated to Visual Studio 2022.
1.7.3: Fixed another regression that incorrectly handled arguments on the command line with quotation marks.
1.7.2: Fixed a regression that incorrectly handled arguments to the application specified on the command line.
1.7.1: Improved the usage output.
1.7.0: Worked around Microsoft’s “incorrect monitor ID” bug even more. This version should fix all occurrences of the “Unable to find path” error. If you’ve seen this error before, please try this version.
1.6.0: Worked around a Microsoft bug that returns an incorrect monitor ID. If you’ve received the “Unable to find path” error with previous versions, this might fix that for you.
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

One thought on “Display Changer II 1.8.9”

Comments are closed.