A simple program for displaying JPEG files as a slideshow. Originally created in 2002, it remains one of the very few slideshow programs available with special features for multi-monitor systems.
Download Slideshow by clicking on the filename below.
Slideshow.zip (273 KB)
Last updated: 06/07/04
Please ensure you have read the conditions for downloading and using this program.
Note regarding virus detection: please see this page regarding the occasional false virus detections that continue to irritate me.
Displays all JPEG and Bitmap files in a given directory as an automatic, full-screen, slideshow
Images displayed in random order, by date order, or by filename
Slideshow can be limited to only the newest files on disk
Control the slideshow with either the keyboard or the mouse
Split screen mode allows you to show up to 4 images per monitor
Features for systems with multiple monitors attached
Use either all of the monitors on the system, or a selection of them
Displays a different image on each monitor
Easily switch an image between monitors while slideshow is paused
Development on Slideshow has ceased
As noted above, the last update to this program was made in 2004, while I was still an undergraduate. I now work full-time with a perpetually busy schedule, and no longer have the time to devote to keep updating the software. In addition, the development environment used to create the program (Delphi 7) is no longer freely available, so further modifications are not feasible at present.
The version here, which has no serious bugs that I am aware of, will remain online for the foreseeable future.
I started writing this program way back in 2000, and have been working on it periodically ever since; since 2002 it’s been in a state where I’m happy to unleash it on other people.
Anyway, back to 2000. At the time, I’d just bought a new video card for my computer that allowed 2 monitors to be attached at the same time (the Matrox Millenium G400). In case you’ve never seen this feature, it means you effectively double the space of the desktop. Each monitor displays a different part of the desktop, not the same part, so you can run different programs on each monitor. There’s a nice page which explains this on the Microsoft website.
“This is cool,” I thought, and then tried to find something that it was useful for. After exhausting the obvious ‘Ooh I can have Word open on this screen and the Internet on the other!’, I thought, “Wouldn’t it be nice if I could run a slideshow with a different picture on each monitor?”
I searched around on the Internet for a while but couldn’t find anything that would do it. So I started writing my own. Here it is. To my knowledge, this is still the only free slideshow program that allows for multiple monitors.
These days, multiple-monitor support is becoming quite commonplace, even if only in the form of TV-out on your graphics card. Many recent nVidia and ATI cards now come with it built in.
Slideshow will theoretically support as many monitors as you have on your system. A word on OS support: multiple monitor support was introduced in Windows 98, and this program has been tested as working on pretty much every PC version of Windows from 98 onwards (except ARM variants).
So far I’ve only had the chance to thoroughly test this program on systems with two monitors installed. My thanks to Douglas Cohn of Photogra.com, who tested the program with a 5 monitor system, and provided me with a picture of the setup (below). If you’ve got it working with something similar, I’d be interested to hear how you got on, so please leave a comment at the bottom of the page with your experiences.
Slideshow is designed to run with the minimum of footprint on your computer. The only file required for the program to run is the .exe file itself. Of course, some pictures would be useful.
Place the Slideshow program anywhere and run it to begin.
The simplest way to start the program is to just double-click it in Explorer. This will start a slideshow using whatever files it can find (see below) and using all the available monitors on the system.
When the program is first run, it will check to see if it has been passed a pathname (see above) and check that directory for JPEG files. If it find none, it will then check the directory in which the program resides. If it still finds nothing, it will present a dialogue box asking the user to select a directory.
Advanced options can be specified using command line switches when launching the program. The syntax is as follows:
To use these, you need to type them at a command prompt, or create a shortcut to the program and add them to the target box as demonstrated here. All switches are optional and most can be specified in any order. The various functions are explained below:
Changes the background colour from Black to White.
When specified, the program will create a debug.txtfile either in the same directory as the program, or, if that directory is read-only (i.e. on a CD), in the temporary directory as specified by Windows. This file gives some clues as to what the program does when it runs, and logs details of any errors.The temporary directory is usually C:\Windows\Temp on Windows 98/Me machines, or C:\Documents and Settings\Administrator\Local Settings\Temp on Windows 2000/XP. Also, when the slideshow is running, bringing up the status (see below) will tell you where the debug file is.
Automatically shrinks images that are bigger than the screen so that they fit on the screen.
Multi-monitor mode only: Changes the ‘primary’ monitor to the monitor number specified by n. The default value for n is 1.You can find out which monitor has which number by looking at the Display control panel.
Tells the program to only show the x least recent images. For example, the switch /L30 tells the program to only display the oldest 30 images from the directory chosen. Note that if used with /S, the slideshow will pick the newest 30 out of every image it finds.
Multi-monitor mode only: Tells the program only to use the extra monitors listed in x,y,z. For example, the switch /M2,4 tells the program to only use monitors 2 and 4. Note that monitor 1 will always be used unless the primary monitor is changed using /P. Default is to use all monitors on the system.You can find out which monitor has which number by looking at the Display control panel.
Tells the program to only show the x most recent images. For example, the switch /N30 tells the program to only display the newest 30 images from the directory chosen. Note that if used with /S, the slideshow will pick the newest 30 out of every image it finds.If used with /O, images will be displayed in date order, oldest file first. If you want to order by date but not filter to the newest x files, specify 0 for x, or leave it out completely (i.e. just specify /N).
Program displays the images in alphabetical order by pathname instead of in random order.
Tells the program how many seconds to leave each image on the screen for before changing to the next image. Default is 5 seconds. Maximum is 4294967.295 seconds (no, really).
Tells the program to also search for images in all sub-directories of the search directory.
Enables the display of each image’s filename in large type. n determines where the title is shown. If n is not specified, the default is 1
Bottom edge of screen
Top edge of screen
Left edge of screen
Right edge of screen
Note that the text always faces outwards, so the left and right edge titles are rotated 90° CW and 90° CCW respectively, and the top edge title is upside down.
Tells the program to use ‘split-screen’ mode, which allows the display of either 2 or 4 images per secondary monitor. Valid values of n are 2 and 4 only. To split the primary monitor as well, see option /V below.
Tells the program to also split the primary monitor. Only valid when used with /U above. Note that when this is used, all the special functions normally associated with the primary monitor (e.g. image swapping, status text) will apply only to the left split (in 2-up mode) or the top left split (4-up mode).
Tells the program which directory to look for JPEG files in. If you use a directory with a space in its name, be sure to enclose the pathname in double quotes, e.g. “C:\My Folder”
Controlling the slideshow while it is running
While the slideshow is running, you can pause the slideshow by either pressing the P button, the space bar, or by clicking the right mouse button. Pressing any other key, or clicking the mouse, will instantly quit the slideshow.
Once paused,the following commands are available:
P or Space bar, or Right mouse button
Resume the slideshow (de-pause).
Left mouse button
Clicking an image will swap that image with the one on the primary display, so that the clicked image is displayed on the primary monitor. Obviously, only useful if you have more than one monitor.
Changes the background colour from Black to White or vice-versa.
Toggles automatically shrinking images that are bigger than the screen so that they fit on the screen.
Toggles displaying the images in alphabetical order by pathname instead of in random order.
Toggles display of the programs status, i.e. status of the switches described above, and also displays on each screen the pathname of the current image being displayed.
Toggles the display of each image’s filename in large type at the bottom centre of each screen.
1 – 9
Sets the number of seconds that the program leaves each image on the screen for before changing to the next image..
+ or –
Scroll wheel up or down
Increases or decreases by 1 second the time the program leaves each image on the screen for before changing to the next image.
This is a list of the current known issues with the Slideshow program.
Specifying /P1 on the command line produces a spurious error message about monitor 1 being invalid. This can be ignored since monitor 1 is the default monitor anyway.
Fixed a bug with secondary monitors not being displayed caused by the new Delphi compiler taking notice of a setting it ignored before.
Changed the way the timer works. All images are now on a single timer instead of there being an independent timer for each screen. This means that the images should now always switch simultaneously, which they were supposed to before, but sometimes there was a slight lag. The altered program logic also removes the dumb restriction that meant you were only guaranteed a unique image on each monitor if there were at least twice as many images available as there were screens. Now you only need at least the same number, for reasons that should be obvious.
Fixed the /P switch so that when you set the primary screen to not be on monitor 1, the slideshow actually positions all the secondary screen correctly (oops). Since 1.3.0 the secondary screen that was being replaced by the primary would in fact stay in its normal position, with the primary screen obscuring it. This meant that the slideshow appeared not to be using all the available images.
Fixed a minor aesthetic issue where a blank primary screen would be displayed while the first image was loading – it looked ugly in split-screen mode.
Fixed a problem where the first image transition would happen almost straight away instead of being timed.
Enhanced the /T switch so that image titles are rotatable.
Fixed a problem where images were being repeated and the slideshow was locking up sometimes.
NEW: Added the /T switch to display each image’s filename in large type at the bottom centre of each screen.
Fixed a problem where secondary screens might be obscured by other programs.
Fixed a long-overlooked problem where command keys worked during the slideshow even when it was not paused.
NEW: Added the /L switch to limit the slideshow to only the least recent files in a directory, i.e. only show the oldest 30 images.
NEW: Split screen mode! Added the /U and /V options to allow you to show more than 1 image per monitor.
Fixed a problem where pausing the slideshow when the program was very busy loading images would not pause immediately.
Fixed a problem with the mouse becoming invisible even when moved if it only moved over secondary monitors.
Debug mode now prevents the mouse from becoming invisible and will not force the Slideshow to appear on top of other windows.
Fixed a single bug that would in rare circumstances cause the icons in Windows to disappear after quitting the Slideshow (i.e. Desktop icons, Taskbar icon, Quicklaunch icons). Thanks to Jürgen Holtkamp for providing the flash of inspiration that finally helped me solve this problem.
NEW: Added the /N switch to limit the slideshow to only the most recent files in a directory, i.e. only show the newest 30 images.
NEW: Added the /DEBUG switch so if it all goes horribly wrong we can try and find out why.
Fixed a bug where if a directory was passed with a trailing space inside double quotes, the slideshow would not find any images.
Fixed a problem where having the same number of images as screens would cause the program not to run. (thanks to Andrew Cahill for alerting me to this problem.)
Fixed the secondary image cache. Previously, all secondary monitors would display the same image when the program was under moderate or heavy load. (Thanks to Douglas Cohn for alerting me to this problem and for testing the fixed program.)
Removed an unnecessary global variable.
NEW: Added the /S switch to search all sub-directories for images.
Fixed the UI font so that ClearType works properly under Windows XP.
Removed the pointless restrictions on which monitors could be specified on the command line, and how long a refresh time could be specified on the command line.
NEW: Added support for Bitmap images. Also restructured some code to make it easier to add further file type support in the future.
Solved a problem where the slideshow would get stuck on the same image.
Repaired some missing error messages.
Fixed a bug where if some parameters were passed but no images were found, the slideshow would just show a black screen instead of exiting.
Restructured the image decoding to improve the speed with which large images are displayed on screen.
Got rid of that annoying quirk where if no images were found at startup, a black screen would appear on the screen momentarily before the program quits. Yes, I know it took too long to work that one out.
Fixed a few small memory leaks.
NEW: Added the ability to browse for a folder at startup.
Removed a lot of redundant code by linking the secondary screens more closely with the primary screen.
First public release.