Slide Show Screen Saver for Windows

Release 1.3

by John Walker
February 27th, 2003

Screen with slide image The Slide Show Screen Saver for Windows displays a series of images and (optionally) plays a sequence of sound files from a designated directory. Images in JPEG, GIF, PNG, and BMP formats can be displayed, and full-colour images can be viewed on displays limited to 256 colours. Images too large to display on the screen are automatically scaled to fit. Wave audio (.wav), MP3 (.mp3), and MIDI song files (.mid or .rmi) can be played (assuming you have a sound board, and it includes a MIDI synthesiser). You can configure the rate at which images change and sound files are played, whether images and sounds are chosen at random or are shown in alphabetical order by file name (allowing you to script a slide show), and whether images appear at random positions on the screen to avoid burning in the phosphor (the Prime Directive for screen savers) or appear centred on the screen (preferable, perhaps, for machines running a slide show in a store window or on a trade show stand). Images and sounds can be played independently or synchronised with one another--the latter option allows you to assemble multimedia slide shows with a sound track for each slide. You can optionally display the date and time and/or the names of the current image and sound files above each image.

The Slide Show Screen Saver is available exclusively for 32-bit Windows systems such as Windows 95/98/Me and Windows NT/2000/XP. If you want to enter the Gates, you have to pay the Bill.

Downloading and Installation

Download (Zipped archive, 130 Kb)

After you've downloaded the program archive, extract the files it contains with Info-Zip or a compatible archive extract program, then copy it to the directory where screen savers lurk on your system, as follows:

Windows XP/2000

copy slidescr.scr c:\windows\system32\SlideShow.scr

Windows Me/98/95

copy slidescr.scr c:\windows\system\SlideShow.scr

Windows NT

copy slidescr.scr c:\winnt\system32\SlideShow.scr

The screen saver is supplied as a file conforming to the DOS FILENAME.EXT file name convention to allow you to extract it without requiring an un-ZIP program that understands long file names.


After installing the screen saver, select it by using the Settings item on the Start menu to launch the Control Panel, then use the Display icon to launch the Display Properties panel. Click the Screen Saver tab and click in the Screen Saver drop-down list to display the screen savers installed. If you've copied SlideShow.scr into the proper directory, "SlideShow" should appear in this list (or, perhaps, "Slide Show" if Windows is behaving as documented, which is not the way to bet); select it.

Didn't show up? If "SlideShow" (or "Slide Show") resolutely refuses to appear in the Screen Saver selection box and you're absolutely certain you copied it correctly into the system directory, the source of the difficulty is likely that most dreaded bane of the Windows user and developer, a DLL problem. The Slide Show Screen Saver incorporates "Internet Help" buttons in its Settings dialogue which, when clicked, direct your Internet browser to the appropriate pages on this site. Unfortunately, the system modules (DLLs) required to support this feature were not present in the original release of Windows 95 which, rather than behaving reasonably and simply disabling the feature, instead silently refuses to list a screen saver which requests a DLL missing from the system. If you can't seem to get the screen saver to appear, see if the files "URLMON.DLL" and "SHLWAPI.DLL" are present in the system directory for your version of Windows. If they're missing, that's why the screen saver won't appear. You could try to obtain and install copies of these files (they'll probably magically appear if you install a recent version of Internet Exploder, for example, but I can hardly in good conscience counsel you to consider that). Much safer is to download a variant of the screen saver in which the Internet Help gimmick is disabled. Un-ZIP and copy the contents into your system directory precisely as for the original version, replacing it. The screen saver should now appear in the list--if it still doesn't, I'm out of ideas why not.

It is essential you configure the screen saver in order to specify the directory containing the image files and (optionally) sounds you wish the screen saver to play. Click the "Settings" button to display the screen saver's configuration dialogue, as illustrated below. Items in this dialogue are as follows:

Slide Show screen saver configuration dialogue
Slide directory
This field specifies the drive and directory containing the images and sounds you wish the screen saver to display. All files in the directory with file types (extensions) of .jpg (or .jif or .jpeg), .gif, .bmp, .png are included in the list of images, and files with extensions of .wav, .mp3, .mid, or .rmi are considered sounds, the latter two designating MIDI song files. "Why don't you allow me to specify which files are played and in what order?", you ask. There's no need for this, since the file system already provides precisely this capability in the form of a directory! If you want an image or sound file used, simply place it in the designated directory. To specify the order in which files are played, check the "Alphabetically by file name" button for "Play order" and give the files names which sort in the order you want them used. Besides, if the screen saver had its own private list of files, you'd have to reconfigure it every time you added a new image or sound to the directory; this way there's no need for that--simply copy the file into the slides directory and that's that--it will automatically be included in the show when the screen saver starts the next time.

You can either type in the directory name directly (if it's invalid the screen saver will show a warning message when it next starts), or use the "Browse" button to display an open file dialogue. Navigate to the desired slides directory and select any file in the directory and click "OK". The selected directory name will appear in the slide directory edit field. You have to pick a file because the open file dialogue does not understand the concept of choosing a directory...idiots.

Play order
You can show the slides and play the sound files either in a random sequence, different every time the screen saver starts and re-shuffled after every image has been shown or sound played, or alphabetically by file name (the same order in which "DIR /ONE" lists them by default). If you're using this to set up a slide show which plays in a particular order, note that if you have, say, 20 slides you'd want to give them names like "sld01.jpg", "sld02.jpg",... "sld10.jpg", "sld11.jpg",... "sld20.jpg". If you left out the leading zeroes in the slide numbers then, for example, all the "sld2x.jpg" slides would sort before "sld3.jpg", which is probably not what you had in mind.

Screen position
The whole reason for a screen saver is to keep a constant image from being "burned in" on the phosphor of your monitor's screen. To achieve this goal, by default the screen saver shows successive slides at random positions on the screen (making sure the image isn't clipped by the edge of the screen, of course). If you're more obsessed with symmetry than the health of your monitor (or you have a non-CRT display that's not vulnerable to phosphor burn), check "Centre" to display each slide centred on the screen.

Play sound files
These buttons provide various options for synchronising sounds with images. When the screen saver starts, it scans the slide directory and builds separate lists of image and sound files which are then either shuffled into random order or sorted alphabetically depending on the chosen play order. If you want to associate a particular sound track with each slide you could, for example, name your slide images "sldxx.jpg" and the corresponding sounds "sndxx.wav", then choose alphabetic play order so they would be associated with one another. If you check "Synchronised with slides", the sound corresponding to each slide will then start playing when the slide appears on the screen. If a sound plays longer than the specified interval between slide changes, the change will be delayed until the sound for the current slide completes. The default option, "Continuous", decouples sounds from image changes. In this mode the screen saver plays sound files like a compact disc player in "shuffle play" mode, with a pause of the specified number of seconds between tracks so sounds don't run together. If you'd like to decide yourself when a sound is played, check "When Enter key pressed" and press the Enter/Return key to start the next sound file. The Enter key is ignored if a sound is already playing. You can halt a playing sound in any mode by pressing the Esc key. Finally, if you have sound files in your slide directory, but you don't want to play them at the moment, check "Never" and the sound files will be ignored. If you have sound files in your directory, "Never" is not checked, but they don't seem to play, the culprit may be notorious volume control which, on some sound cards, likes to default to no sound at all. Click on the little volume control icon: Speaker icon (it's usually hiding at the right of the bozo bar on the bottom of your screen) and crank up the Master, Wave Audio, and MIDI volume controls to something reasonable. The appearance of the icon and the nomenclature in the volume control box may differ depending on which sound card you're using.

Show date and time
If checked, the date and time is displayed in discreet dark blue type above the slide image. If the image is too tall to fit on the screen along with the date and time, it is automatically scaled to fit.

Show file name
If checked, the names of the current image and sound file (if any) names are shown on a line above the slide. If a sound file is playing, its name follows that of image, separated by a plus sign, "+". If "Show date and time" is also checked, the file name(s) follow the date and time, enclosed in parentheses.

Show file type
If "Show file name" is checked and this box is also checked, the file type (or extension) such as .bmp will be included in the file name display. If you prefer to see just the file name, uncheck this box to hide the file type.

Always use 256 colour palette
Slide images come in a variety of formats, ranging from pure black and white bitmaps, grey scale, colour images with palettes of various sizes, and full colour images in which every pixel can have a different colour. If your computer's graphics hardware is limited to 256 colours, full colour images are displayed by performing colour quantisation to reduce the number of distinct colours in the image to 256, chosen to preserve, as closely as possible, the appearance of the original image. If your computer is equipped with "high colour" (15 or 16 bits per pixel: 32768 or 65536 colours) or "true colour" (24 bits or more per pixel) hardware, true colour images can be sent directly to the screen without the quantisation step. If this box is checked, full colour images are quantised even if the hardware is capable of displaying them directly. The principal reason for this option is to permit testing the quantisation algorithm on computers equipped with full colour hardware, but there's another reason you might want to use it. "High colour" (15 or 16 bit) displays really don't have enough resolution (only 5 or 6 bits) per colour to render smooth changes in shade over large areas of an image such as, for example, backgrounds in portrait photography or the change in shade in the sky above the horizon. Such images, viewed on high colour displays, may exhibit unattractive and distracting "banding" effects due to the limited colour resolution of the display, and frequently actually look better when reduced to 256 colours. So, if you have a high colour display and are bothered by band artifacts, you might give this a try. Warning! Colour quantisation is a relatively time-consuming process: it can take several seconds to quantise the colours in a 1024×768 pixel full colour image on a machine in the 133 MHz Pentium class. If you're installing this screen saver on a server machine (probably a bad idea in any case), or your computer runs CPU-intensive tasks in the background (for example, helping to search for new Mersenne prime numbers), and you've configured the screen saver to change slides quickly, the process of quantisation may consume a substantial fraction of your CPU's capacity. So, unless you don't care how much compute time is devoured by the screen saver, stay away from this mode and, if you have a 256 colour display, use a long interval between slide changes.

Change slides every n seconds
Slides will change at the given interval. If you've requested that sound files be synchronised with slides and, at the scheduled time to change slides the last sound is still playing, the change will be delayed until the sound completes.

Frequently Asked Questions

Can I make a "play list" of slides, listing them in order?
See the discussion above of how to set the order in which slides show by giving them file names in alphabetical order the same as the projection sequence, and how to choose file names to achieve the desired results.

All I want is a sound file juke box. How do I get rid of the ugly "No image files in directory" warning?
The warning was put in because it's easy to enter an incorrect directory name, forget to set the directory at all when you install the screen saver, or move your images to a different directory without notifying the screen Small black square saver of the change. If the screen saver only displayed a blank screen in this case, folks would conclude "it's broken" but not know why; that's Microsoft's style, not mine. To get rid of the "No image files" warning, simply place an all-black image in the slides directory along with your sound files. If you don't want to make such an image yourself, download the one at the right.

I installed your screen saver on our NT-based server, changing slides every three seconds, and now everybody complains the server takes forever to respond. What's the problem?
Whoa! Fancy screen savers (or even rudimentary ones, like this) are for single user machines that don't run background tasks. Loading, decoding, and displaying an image can take a substantial amount of CPU time, much more if the image must be quantised for display on 256 colour graphics hardware. Servers should run a "blank the screen" or other non-animated screen saver. If you must run this on a server or machine running background jobs, choose a long interval between slide changes, such as two minutes. How frequently are you apt to look at the screen, anyway?

Other Windows Screen Savers at this Site

Source Code

Experienced C programmers who wish to modify the screen saver or simply look under the hood to see how it works may download the source code. You're welcome to use this source code in any way you like (the third-party image utilities included must be used pursuant to the redistribution requirements described in their respective directories in the archive), but absolutely no support is provided--you're entirely on your own.

When you unzip the archive, be sure to use a utility which preserves long file names and specify the option which maintains the directory structure in the archive; the various image processing libraries are kept in subdirectories, with the resulting library files linked into the screen saver proper.

The source code for this screen saver incorporates Fourmilab's Scream SaverTM technology. Because they turn off the cursor and seize control of the screen, mouse, and keyboard, screen savers can be hideously difficult to debug; you can't see the debugger since the screen saver is monopolising the screen, and any mouse motion terminates the screen saver, bringing the debugging session to a screeching halt. Scream Saver avoids these difficulties by allowing you to test an unmodified screen saver in a regular application window which can coexist with a debugger. Scream Saver is a main program which completely emulates scrnsave.lib, allowing you to exercise a screen saver within an application window (in either normal or preview mode) or in full screen mode. The screen saver's settings dialogue can be activated by a menu selection. To build with Scream Saver, simply uncomment the definition of SCREAM_SAVER at the top of the file screamsv.c and rebuild. (It's best to do a "Rebuild All" since Monkey C often screws up dependencies between program files and libraries, and you may get link errors when you change the setting of SCREAM_SAVER.) Launch the Scream Saver build as you would any application. Your screen saver can be tested in its various modes from the "Test" menu. Scream Saver only terminates the screen saver on a mouse click or keypress within its own window--mouse motion does not cause it to exit. This allows you to run your screen saver under a debugger as you would any other normal application. Scream Saver is in the public domain--you're welcome to use it in your own screen savers and pass it along to other developers. (One detail: Scream Saver allows you to start and terminate the screen saver any number of times in one execution session. This never happens when a screen saver is invoked by Windows. If your screen saver doesn't clean up after itself so it can be restarted, it may fail if you start it more than once in a Scream Saver session. You have two options: either fix the screen saver so it is restartable or re-launch Scream Saver for each debug session. The Slide Show Screen Saver is restartable.)

Microsoft Visual C 7.0 introduces a new XML-based file format for the build instructions for a program ("solution/project"), supplanting the Makefile which provided at least a glimmer of hope for portability among releases and compilers. "Solution" and "Project" files are included along with the source code in the various directories. Whether these files will work for you depends on how compatible whatever compiler you're using is with Microsoft C 7.0.

If you aren't able to use the "Solution" and "Project" files, you'll have to manually create a project, import the files into it, and set the configuration options appropriately to build a screen saver. The program should be built as a Win32 application not using (shudder) MFC. If you re-create the project, you'll have to add the "../jpeg", "../libpng", and "../zlib" directories to the include search path for the slidescr project, and "../zlib" to the path for the libpng project. Then you'll have to include the respective libraries in the link of slidescr. You will also need to include the Windows libraries comctl32.lib, scrnsave.lib, winmm.lib, and urlmon.lib as well (of course, by the time you get around to doing this, undoubtedly the Kode Kiddies will have renamed one or more of these, in which case happy hunting).

All prior releases are available from the archives.


The ability to show images in a variety of formats was made immeasurably easier thanks to the following freely available image toolkits.
BMP files (Microsoft Device Independent Bitmap format) files are read with code developed specially for use in this screen saver. Its source code is in the public domain and may be used in any manner without permission, restriction, attribution, or compensation. BMP files with 1, 4, 8, or 24 bits per pixel may be displayed. The idiotic 16- and 32-bit per pixel BMP formats are not supported--if you have any such files, simply convert them into JPEG or PNG files--they'll undoubtedly wind up far smaller and load quicker than uncompressed BMPs. In fact, almost any BMP file is a waste of disc space; most programs which create BMPs do not compress them, and the feeble RLE compression scheme provided by BMP is extremely inefficient compared to the other formats available and is, in any case, not even usable with 24 bit per pixel full colour bitmaps. BMP format is supported purely because many Windows users store images in this form instead of one of the wiser alternatives.

GIF images are read using code derived from the giftopnm module of the NETPBM image processing toolkit; this filter was contributed to PBMPLUS and NETPBM packages by David Koblas.
Copyright 1990, 1991, 1993, David Koblas. (koblas at Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. This software is provided "as is" without express or implied warranty.

The Graphics Interchange Format© is the Copyright property of CompuServe Incorporated. GIFSM is a Service Mark property of CompuServe Incorporated.

JPEG images are decoded courtesy of the Independent JPEG Group's JPEG software. This software is the work of Tom Lane, Philip Gladstone, Luis Ortiz, Jim Boucher, Lee Crocker, Julian Minguillon, George Phillips, Davide Rossi, Ge' Weijers, and other members of the Independent JPEG Group.
The authors make NO WARRANTY or representation, either express or implied, with respect to this software, its quality, accuracy, merchantability, or fitness for a particular purpose. This software is provided "AS IS", and you, its user, assume the entire risk as to its quality and accuracy.

This software is copyright © 1991-1998, Thomas G. Lane. All Rights Reserved except as specified below.

Permission is hereby granted to use, copy, modify, and distribute this software (or portions thereof) for any purpose, without fee, subject to these conditions:

  1. If any part of the source code for this software is distributed, then this README file must be included, with this copyright and no-warranty notice unaltered; and any additions, deletions, or changes to the original files must be clearly indicated in accompanying documentation.
  2. If only executable code is distributed, then the accompanying documentation must state that "this software is based in part on the work of the Independent JPEG Group".
  3. Permission for use of this software is granted only if the user accepts full responsibility for any undesirable consequences; the authors accept NO LIABILITY for damages of any kind.

These conditions apply to any software derived from or based on the IJG code, not just to the unmodified library. If you use our work, you ought to acknowledge us.

Permission is NOT granted for the use of any IJG author's name or company name in advertising or publicity relating to this software or products derived from it. This software may be referred to only as "the Independent JPEG Group's software".

We specifically permit and encourage the use of this software as the basis of commercial products, provided that all warranty or liability claims are assumed by the product vendor.

The JPEG library contains an excellent colour quantisation module which implements Paul Heckbert's median-cut algorithm with back end Floyd-Steinberg error diffusion. This code is used for all image formats when a full colour image must be displayed on a 256 colour palette display.

Images in PNG (Portable Network Graphics) format (a lossless compression standard which avoids the numerous portability and legal drawbacks of the outdated and proprietary GIF format) are read using the libpng package.
Copyright © 1998-2002 Glenn Randers-Pehrson
Copyright © 1996, 1997 Andreas Dilger
Copyright © 1995, 1996 Guy Eric Schalnat, Group 42, Inc.

Contributing Authors: Simon-Pierre Cadieux, Eric S. Raymond, Gilles Vollant, John Bowler, Kevin Bracey, Sam Bushell, Andreas Dilger, Magnus Holmgren, Tom Lane, Dave Martindale, Glenn Randers-Pehrson, Greg Roelofs, Guy Eric Schalnat, Paul Schmidt, Tom Tanner, Willem van Schaik, Tim Wegner.


The PNG Reference Library is supplied "AS IS". The Contributing Authors and Group 42, Inc. disclaim all warranties, expressed or implied, including, without limitation, the warranties of merchantability and of fitness for any purpose. The Contributing Authors and Group 42, Inc. assume no liability for direct, indirect, incidental, special, exemplary, or consequential damages, which may result from the use of the PNG Reference Library, even if advised of the possibility of such damage.

Permission is hereby granted to use, copy, modify, and distribute this source code, or portions hereof, for any purpose, without fee, subject to the following restrictions:

  1. The origin of this source code must not be misrepresented.
  2. Altered versions must be plainly marked as such and must not be misrepresented as being the original source.
  3. This Copyright notice may not be removed or altered from any source or altered source distribution.

The Contributing Authors and Group 42, Inc. specifically permit, without fee, and encourage the use of this source code as a component to supporting the PNG file format in commercial products. If you use this source code in a product, acknowledgement is not required but would be appreciated.

There is no warranty against interference with your enjoyment of the library or against infringement. There is no warranty that our efforts or the library will fulfill any of your particular purposes or needs. This library is provided with all faults, and the entire risk of satisfactory quality, performance, accuracy, and effort is with the user.

Libpng, in turn, uses the zlib compression and decompression library written by Jean-loup Gailly and Mark Adler.
Copyright notice:

© 1995-2002 Jean-loup Gailly and Mark Adler

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgement in the product documentation would be appreciated but is not required.
  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.
Jean-loup Gailly     Mark Adler
jloup at   madler at

If you use the zlib library in a product, we would appreciate not receiving lengthy legal documents to sign. The sources are provided for free but without warranty of any kind. The library has been entirely written by Jean-loup Gailly and Mark Adler; it does not include third-party code.

by John Walker

Fourmilab Home Page