res_set 1.5 has been released (09-Sep-07)
Submitted by ross on Wed, 09/26/2007 - 21:42.
I could not find a reliable command line resolution changer, so I wrote res_set.
You can download the binary here and the source code here. Here's the changelog:res_set changelog Version 1.5 - 03 Mar 07: Added additional resolutions per http://en.wikipedia.org/wiki/List_of_common_resolutions Removed SUXGA (1800x1440} as it doesn't seem to be used anywhere Version 1.4 - 12 Jul 06: Standardized version information across all programs Version 1.3 - 22 May 06: Added -Z | --raw List all graphics modes (CAUTION!) Fixed command line parsing issue Updated documentation Version 1.2 - 21 May 06: Added -o | --orientation n Set display orientation to 'n' (0,90,180,270) Added -x | --positionx n Set display x position to 'x' Added -y | --positiony n Set display y position to 'y' Added -c | --current Set/get current settings (not registry settings) Changed -d | --depth to -b | --bits (--depth still works) Changed -E | --no-reset to -R | --no-reset Changed -e | --reset to -r | --reset Changed -i | --list-monitors to -L | --list-monitors Changed -m | --monitor to -M | --monitor-name Changed -n | --min to -i | --min Changed -o | --mode to -e | --mode Changed -r | --refresh to -f | --frequency (--refresh still works) Changed -u | --full-screen to -T | --temporary (--full-screen still works) Changed -z | --monitor-no to -m | --monitor (--monitor-no still works) Added ability to specify resolution using one of the following abbreviations: WUXGA (1920x1200) SUXGA (1800x1440} (Sorta Ultra XGA :) WSXGA+ (1680x1050) UXGA (1600x1200) WSXGA (1600x1024) SXGA+ (1400x1050) SXGA (1280x1024) WXGA (1280x720) XGA (1024x768) SVGA (800x600) VGA (640x480) EGA (640x400) CGA (320x200) Version 1.1 - 08 Apr 06: Added -s | --save Settings will be permanently changed for the current user Added -g | --global Settings will be permanently changed for all users Added -u | --full-screen Change is temporary in nature Added -e | --reset Settings will be changed, even if they are the same Added -E | --no-reset Settings will be stored, but will not take effect Added -p | --primary Device will become the primary device Added -t | --test Tests if the requested graphics mode could be set These options set each of the following ChangeDisplaySettingsEx() flag options: CDS_UPDATEREGISTRY The graphics mode for the current screen will be changed dynamically and the graphics mode will be updated in the registry. The mode information is stored in the USER profile. CDS_GLOBAL The settings will be saved in the global settings area so that they will affect all users on the machine. Otherwise, only the settings for the user are modified. This flag is only valid when specified with the CDS_UPDATEREGISTRY flag. CDS_FULLSCREEN The mode is temporary in nature. Windows NT/2000/XP: If you change to and from another desktop, this mode will not be reset. CDS_NORESET The settings will be saved in the registry, but will not take effect. This flag is only valid when specified with the CDS_UPDATEREGISTRY flag. CDS_RESET The settings should be changed, even if the requested settings are the same as the current settings. CDS_SET_PRIMARY This device will become the primary device. CDS_TEST The system tests if the requested graphics mode could be set. Added .rc and .ico files Improved build scripts Updated documentation Version 1.0 - 06 Feb 06: Initial release
and here's the readme.txt:
res_set - Version 1.5 - Mar 03 2007
Copyright (c) 2005-2006 Ross Smith II (http://smithii.com) All Rights Reserved
------------------------------------------------------------------------------
Usage: res_set [options] [resolution]
Options:
-w | --width x Set horizontal resolution to 'x' (min/max allowed)
-h | --height y Set vertical resolution to 'y' (min/max allowed)
-b | --bits bpp Set color depth (bits/pixel) to 'bpp' (min/max allowed)
-f | --frequency hz Set refresh frequency to 'hz' (min/max allowed)
-o | --orientation n Set display orientation to 'n' (0,90,180,270)
-x | --positionx n Set display x position to 'x'
-y | --positiony n Set display y position to 'y'
-e | --mode n Set display mode to 'n'
-m | --monitor n Set/get display settings for monitor number 'n'
-M | --monitor-name x Set/get display settings for monitor named 'x'
-i | --min Use minimum supported value for width/height/bits/freq
-a | --max Use maximum supported value for width/height/bits/freq
-q | --query Show current display settings and exit
-l | --list List available display modes
-L | --list-monitors List the names of the monitors
-Z | --raw List all graphics modes (CAUTION!)
Even those not supported by the current monitor
-c | --current Set/get current settings (not registry settings)
-s | --save Settings are permanently changed for the current user
-g | --global Settings are permanently changed for all users
-r | --reset Settings are changed, even if they are the same
-R | --no-reset Settings are stored, but will not take effect
-p | --primary Selected monitor will become the primary monitor
-T | --temporary Change is temporary in nature
-t | --test Tests if the requested graphics mode could be set
-v | --version Show version and copyright information and quit
-? | --help Show this help message and quit
Examples:
res_set -l 21 & rem list the display modes
res_set -e 21 & rem set display to mode 21
res_set xga & rem set resolution to 1024 x 768, depth/refresh to minimum for this resolution
res_set -max xga & rem set resolution to 1024 x 768, depth/refresh to maximum for this resolution
res_set -w 800 -h 600 & rem set resolution to 800x600, depth/refresh to minimum for this resolution
res_set 800 600 & rem same as above
res_set -w 800 -h 600 -d 32 -r 60
res_set -max & rem use highest supported resolution/depth/refresh values available
res_set -max -f min & rem use highest supported resolution/depth but the lowest refresh rate
res_set -m 2 800 600 & rem set monitor 2's resolution to 800x600
res_set -m 2 -x 200 -y -600 800 600 & rem set monitor 2's resolution to 800x600, and position to 200,-600
Also
--refresh alias for --frequency
--freq alias for --frequency
--bpp alias for --bits
--depth alias for --bits
-d alias for --bits
You can use / instead of - to preface single letter options, //width will *not* work.
Resolution can be entered as 'width height', or one of the following terms:
320x200 CGA Computer Graphics Adaptor
640x400 EGA Enhanced Graphics Adaptor
640x480 VGA Video Graphics Adaptor
800x600 SVGA Super VGA
1024x768 XGA eXtended Graphics Array
1280x800 WXGA Wide XGA
1280x1024 SXGA Super XGA
1440x900 WXGA+ Wide XGA+
1440x900 WSXGA Wide SXGA
1400x1050 SXGA SXGA+
1680x1050 WSXGA+ Wide SXGA+
1600x1200 UXGA Ultra XGA
1920x1200 WUXGA Wide UXGA
2048x1536 QXGA Quad XGA
2560x1600 WQXGA Wide QXGA
2560x2048 QSXGA Quad Super XGA
3200x2048 WQSXGA Wide QSXGA
3200x2400 QUXGA Quad Ultra XGA
3840x2400 WQUXGA Wide QUXGA
4096x3072 HXGA Hexadecatuple XGA
5120x3200 WHXGA Wide HXGA
5120x4096 HSXGA Hexadecatuple Super XGA
6400x4096 WHSXGA Wide HSXGA
6400x4800 HUXGA Hexadecatuple Ultra XGA
7680x4800 WHUXGA Wide HUXGA
Not all of the above modes will be available.
Source: http://en.wikipedia.org/wiki/List_of_common_resolutions
------------------------------------------------------------------------------
res_set will only allow you to set parameters to those that are reported by
Windows to be supported by your video card (or you use the --raw option).
Unfortunately, your monitor may not be able to support all of these modes.
Therefore, you should test each mode manually, before using res_set.
Failure to do so, may permanently damage your monitor, computer, and/or mind.
To avoid this, res_set will always select the mininum values for the color
depth and refresh rate, if you do not specify them.
If you do not specify the resolution, res_set will default to the current
resolution for the current monitor, or the monitor you have specified.
If you only specify the width/height, res_set will use the minimum value
for the height/width supposed for the width/height you used.
------------------------------------------------------------------------------
Sources: http://www.vaughns-1-pagers.com/computer/video-resolution.htm
http://www1.us.dell.com/content/topics/global.aspx/vectors/en/2002_lcd?c=us&l=en&s=corp
http://www.videotechnology.com/0904/formats.html
http://www.berghell.com/whitepapers/Display%20Resolutions%20and%20Nomenclature%20-%20Display%20Sizes%20in%20Pixels%20-%20%20Horizontal%20by%20Vertical.pdf
------------------------------------------------------------------------------
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
$Id$
See also:
http://www.vaughns-1-pagers.com/computer/video-resolution.htm
http://www1.us.dell.com/content/topics/global.aspx/vectors/en/2002_lcd?c=us&l=en&s=corp
http://www.berghell.com/whitepapers/Display%20Resolutions%20and%20Nomenclature%20-%20Display%20Sizes%20in%20Pixels%20-%20%20Horizontal%20by%20Vertical.pdf
»
- ross's blog
- Login or register to post comments

Primary Monitor
Thanks for this excellent tool! Just two questions:
- It isn't clear how to use the -primary directive. How does one specify *which* device is to be primary? E.g. if I want the external monitor to be my primary.
- Is it possible with res_set to enable "mirroring" between two monitors? I'm making a batch file for my parents for them to show picasa slides on their TV; ideally it should set the screen resolution to match the TV (XVGA) and mirror the laptop and TV screens.
(Also cool that you're using Drupal)