Copyright: Copyright © 1994, Allen Jackson


Screen Saver Enhancer

Screen Saver Enhancer (SSE) 2.52 is an add-in to Microsoft Windows that gives additional functionality to screen savers.  The primary function of SSE is to force the screen to blank using the current screen saver whenever the user desires, or to disable the screen saver when blanking is not desired.  These functions are available through a menu, or by resting the mouse cursor in a user-selectable screen corner.  SSE also provides enhanced security; in addition to blanking any time, you can have SSE run your screen saver immediately upon Windows startup.  SSE is a standalone utility and requires no DLLs or VBXs.  SSE allows convenient selection, testing, and configuring of screen savers through a professional, well-designed interface.

Choose a topic below for more information.

About SSE

SSE Control Panel

SSE Options

System Menu

Registration

About Screen Savers

Contacting the Author


Notes about SSE
About SSE

SSE was developed to enhance the tremendous number of available Windows screen savers to allow them to be used in the same way commercial screen saver add-ons are used.  This goal has been achieved and then some.

Thanks to everyone who has tried SSE and provided the valuable feedback that has helped shape the product.  I would like to convey special thanks to the many customers who have registered SSE.  The concept of shareware is sound, but it only works because of the people and organizations that conform to the idea with their financial support.

For more information about specific aspects of SSE, choose a topic below:

Registration

SSE Invoice

Terms and Conditions

Disclaimer

Installing SSE

Removing SSE

Future Enhancements

Development Information

Contacting the Author


SSE Control Panel

The SSE Control Panel can be opened by double-clicking on the SSE icon or choosing Control Panel... from the SSE system menu.  The SSE Control Panel is so named because it replaces the Windows Control Panel Desktop applet and more.

Current Screen Saver

This is a drop down list containing all of the available screen savers on your system.  The current screen saver is shown in the edit window.

Test

This will start the current screen saver for your edification and enjoyment.

Setup...

This opens the configuration dialog for the current screen saver.

Screen Saver Delay (in seconds)

The Screen Saver Delay differs from the standard setting in that it allows specification of seconds rather than minutes (try setting it to one second and see how long you can work without taking a one second break).

Screen Saver State

Three states are possible for the screen saver function of Windows:

On

Off until Windows restarts

Disabled

If Off or Disabled is selected, Windows will never save the screen due to expiration of the delay time; the only way to blank the screen is explicitly with the SSE sleep corner or Sleep Now! menu option.  Choosing Disabled maintains the "off" state across Windows sessions.

Options...

Choosing the Options... button opens the SSE Options dialog where you can set options that are particular to SSE.

About...

Choosing the About... button opens the About Box for SSE.

Register...

Choosing the Register... button opens the SSE Registration dialog.

Note:  the sleep corner is disabled while any SSE dialogs are open.


SSE Options

Choosing Options... from the SSE Control Panel opens the SSE Options dialog.

Screen Corners

The corner designations are:

TL - Top Left

TR - Top Right

BL - Bottom Left

BR - Bottom Right

Sleep Corner

The sleep corner is the magic switch that starts the screen saver.  Just rest in the sleep corner for at least a second, and the screen saver will start.  SSE must be minimized for the sleep corner to be active; if any of the SSE dialogs are open, the sleep corner is disabled.  The one second delay is to reduce accidental blanking.  The default sleep corner is the lower left.  Upon restoring the screen, if the mouse is still in the sleep corner, SSE will not save the screen until the mouse is moved away from, and back to, the sleep corner.

Notice that even when MS-DOS is the top-most application, that the sleep corner works!  Windows 3.1 refuses to blank MS-DOS sessions by delay, but it can be done explicitly using SSE.

Sleep Never Corner

Positioning the cursor in the sleep never corner disables the screen save delay feature.  The cursor will change to an exclamation point when it is in the sleep never corner (16-bit SSE behaves differently with Windows 95 due to the task bar and virtual desktop sizing).  As long as the cursor remains in the sleep never corner, Windows will not blank the screen.

Hide the SSE icon on startup

Many people do not need instant access to the control panel, and for that reason you can hide the SSE icon, but still retain the sleep now/sleep never corners!  It can be hidden on startup, or at any time from the SSE system menu.  When SSE is hidden, it's really hidden.  It will not appear in the task list or in the Alt-Tab sequence.  To reveal SSE, just run it from the program icon.

To determine if SSE is running at any time, move the mouse pointer to the sleep never corner and the cursor will change to an exclamation mark to indicate that SSE is active.

Blank the screen immediately on startup

Checking this option causes SSE to blank the screen immediately upon executing the first instance of SSE.  This is to enhance the ability of screen savers with passwords to secure your workstation.  Adding "/blank" to the SSE command-line will do the same thing.

Disable the splash screen (registered version)

Well, if you really want to, and you are a registered user, you can disable the splash screen.  If you do though, and you are hiding SSE on startup, you will have no indication that SSE loaded.  I don't know why anyone wouldn't want to see the very attractive splash screen as often as possible...


Splash Screen

The splash screen is your primary indication that SSE is being loaded.  If the SSE icon is being hidden on startup, it is the only indication.  The shareware version of SSE contains the phrase "UNREGISTERED SHAREWARE" in the splash screen.  Upon valid registration, this message is removed and you have the option to disable the splash screen completely.  In addition, the shareware delay for the splash screen is four seconds.  This is reduced to one second upon registration.  The splash screen is the only difference between the shareware version and the registered version.  The shareware version of SSE is fully functional.

Note that the splash screen does not affect the operation of Windows.  For instance, if the shareware version of SSE loads first in your Windows Startup group, it will not delay the loading of other software.  In fact, you can start any program whose icon is not covered by the splash screen at any time while it is on the screen.  Note, however, that because SSE runs in idle time, the splash screen may stay on the screen longer if it is loaded first, because it will not clear the splash screen while other software is loading.  Also, if you open an SSE dialog prior to the splash screen being removed, it will display until the dialog is closed (press the Escape key if you can't see the Cancel button).


SSE System Menu
System Menu

The SSE system menu is presented when the SSE icon is clicked once.

Control Panel...

This option opens the SSE Control Panel.

Hide SSE

This option hides SSE.  To have the icon reappear, you simply run SSE again.

Sleep Now!

This is an alternate way of starting the screen saver.  When Sleep Now! is chosen from the system menu, SSE starts the current screen saver immediately with no delay (unlike the sleep corner).

Also see:

SSE Options


Installing SSE

SSE is eeaaasy to install.  Just put SSE.EXE and SSE.HLP anywhere you want and run it!  It does not touch your Windows .INI files (although SSE creates its own SSE.INI once the options are set).  If you want SSE to start with Windows, drop a copy into your Start Up folder (or add it to the "run=" or "load=" lines in WIN.INI).  Removing SSE is just as easy.

Adding "/blank" to the command-line causes SSE to blank the screen immediately upon executing the first instance of SSE.  See SSE Options for more information.


Removing SSE

Not that you will, but to completely remove SSE from your system, delete the following files:

SSE.EXE

SSE.HLP

SSE.INI (in your Windows directory)

If you do remove SSE, I'd love to know why.


Registration
SSE Registration

SSE is not free; SSE is shareware.  A lot of work has gone into SSE since version 1.0, and it is a valuable and unique Windows enhancement.  All registrations prior to version 3.0 are lifetime registrations, which includes the forthcoming 32-bit version for Windows 95 and Windows NT.

To purchase SSE, choose Invoice, and then select File/Print Topic from the menu, or have your registration completed automatically via CompuServe shareware registration (GO SWREG; # 3681).  See the invoice and ordering options for more information.

The archive which contained this help file also contained SSE.EXE.   When you register you are purchasing the right to continue using SSE beyond the trial period.  The software has already been delivered.  You will not be sent a diskette unless you specifically request and pay for one.

Terms and Conditions


Registration Dialog

Registration of SSE requires a name and matching registration code to be entered in the Registration Dialog.  The codes are unique and keyed to the licensee's exact registration name.  Upper and lower case is significant as well as punctuation and spaces.  For example, if SSE is registered to "Joe Bleaux, Jr.", It must be typed in as Joe Bleaux, Jr. without trailing or leading spaces.  The five digit registration code goes in the second box.  If the code is correct, pressing OK registers your copy of SSE!


Secure Screen

Secure Screen (SECURE.SCR) is a replacement for the "Blank Screen" screen saver that comes with Windows.  Secure screen adds password protection, as many people prefer to have a password on their screen saver.  In addition, Secure Screen prevents nudging the mouse from unblanking the screen.  You must use the keyboard to activate the password dialog (I usually just touch the Ctrl key since its harmless when pressed alone), or click the mouse.  The logic for saving the screen is also different from Blank Screen and your screen is restored more quickly when using Secure Screen, particularly important on machines with slow video adapters.

Secure Screen is only available with the registered version of SSE beginning with version 2.51.


SSE Invoice
Screen Saver Enhancer 2.52 Invoice

Instant single-user registration is available via CompuServe (GO SWREG; # 3681).

NEW!!!  All registrations prior to SSE 3.0 are lifetime registrations!

Remit to:	Allen Jackson

P. O. Box 20457

Atlanta, GA  30325

Qty	Product	Price	Amount
____	Screen Saver Enhancer single-user license	$10.00	________
	Multiple unit discounts (each license): from 2-9: $8.00 10 or more: $5.00
____	Screen Saver Enhancer unlimited license	$395.00	________
	Optional:
	3.5" Diskette (includes bonus software - my favorite shareware screen savers plus SECURE.SCR)
	- inside U. S. add	$5.00	________
	- outside U. S. add	$12.00	________
	Total: cash, check, or money order in U. S. Dollars		________

Purchase orders will be accepted from established businesses for a minimum of $50.00.

Please register SSE in the following name:

Registration Name:	_________________________________________________

Mailing Address:	_________________________________________________

_________________________________________________

_________________________________________________

Send my registration code via:	U. S. Mail	Phone

(circle and fill in the blank)	E-Mail	Fax	_______________________

Where did you get SSE? ________________________________________________

Comments:


Ordering Options

The options for ordering are fairly verbose, but not complicated.  I elected to put them on a separate page rather than cluttering up the invoice.

All versions of SSE are identical with respect to the version number.  The diskette version of SSE simply includes Secure Screen and additional shareware screen savers.

Secure Screen is available only two ways - via diskette or CompuServe e-mail.  For all future CompuServe registrations via SWREG, Secure Screen will automatically be included by return e-mail!  CompuServe is the fastest, most convenient way to register; if you don't want a diskette, use SWREG.  If you have never tried it, trust me, you'll like it!  Usually, you will be registered the same day!  For any currently registered user, send me a message and I will send Secure Screen to you via attached file as long as you have a CompuServe account.

By the way, printed documentation is no longer available with SSE.  The help file is far better and stays more up-to-date than any manual I could provide.  In addition, any section of the help file can be printed allowing the user to print only the pages of interest.


Possible Enhancements
Enhancements

Comments have been made for things like single clicking the icon to activate sleep, ability to cycle screen savers, having an installation program, etc.  I'll address these and set the stage for future versions of SSE.

Any sort of left-clicking on the icon to activate sleep is not practical.  Single-clicking on a Windows icon should (and does) cause the system menu to pop up.  Double-clicking causes the application window to be restored.  Although I tried various combinations, in the end, I was not willing to modify the "expected" behavior.  Right clicking is a possibility, but many of these rules change in Windows 95 anyway, so this is on hold.

•	Yes, there will definitely be a 32-bit specific version for Windows 95 and NT.

•	As of SSE 2.5, I have replaced the Windows Control Panel options completely and superseded them within SSE including the chooser, test, setup, and delay.  I am planning for a supervisor mode that would disallow the use of certain screen savers based on password protection and other possible criteria.

•	Many users would like the ability to cycle through their available screen saver modules like commercial screen saver packages. This is a likely addition for SSE.

•	The cursor will blink if you move it around near the don't sleep corner.  This is a behavior of Windows.  Windows resets the cursor every time the mouse changes position.  You usually don't see it because the shape doesn't change often within a screen region.  The only way to prevent the blinking is to disable the mouse when it's in the sleep never corner.  For instance, try double clicking in the don't sleep corner with the desktop underneath - the task list will pop up as it should; not so with SSE 1.1.  Note that Windows 95 treats the mouse differently, and the sleep never cursor will not display correctly.

•	There are no global hot keys to invoke sleep mode.  This requires a system hook into Windows which degrades performance.  Also, system hooks must reside in a DLL which would have added another file to SSE.  A hot key sounds like a good idea, but I have vetoed it for now.


Development Information

I have tested SSE in a variety of different settings and conditions.  I have tested it with dozens of .SCR modules and have found none to be incompatible with SSE.  In fact, to be incompatible with SSE, a screen saver would pretty much have to be incompatible with Windows.  Incidentally, I have found many .SCRs that do not conform well to the Windows screen saver specification, but these have their own set of problems.

There are a few other utilities that can blank the screen similar to SSE.  They use a slew of different methods to accomplish their goal (some much worse than others).  SSE was built to be as unobtrusive as possible.  There are no DLLs required, no system hooks, and no excessive demands.  It runs mostly in idle time.  I have been diligent in making SSE as small and efficient as possible. I hope you find it to be as valuable an addition to your Windows tool kit as I have.

SSE was developed on a Pentium 90 running MS-DOS 6.22 and Windows 3.1.  It was created using Visual C++ 1.52.  SSE was written entirely in C++ utilizing the Microsoft Foundation Classes whenever practical.  SSE was written to be upwardly compatible with Windows.  SSE does not utilize undocumented tricks or traps to accomplish its job, therefore, it is certain to run on all future versions of Windows.  SSE has been tested with Windows 3.1, Windows 95, and Windows NT.

Note:  There is a problem running SSE with Windows 95 - Build 347.  It will crash if you press OK from the Control Panel.  I do not know if they plan on fixing this in the final release, but a 32-bit version of SSE will be out soon anyway....

Program History

Version 1.0

•	Initial release.

Version 1.1:

•	Made corner regions smaller.

•	Added sleep never corner.

•	Added one second delay on sleep activation.

Version 2.0:

•	Added Options, Hide SSE, and Sleep Now! to the system menu.

•	Changed the method for don't sleep control.

•	Cursor is no longer centered away from the sleep corner.  Sleep is activated a single time until the cursor is moved away from and back to the sleep corner.

•	Added the ability to hide SSE.

•	Added SSE options dialog.

•	Added registration dialog (SSE is no longer free).

•	Command-line processing for "/blank".

•	Added Help file.

•	Many other valuable changes that got lost in the shuffle...

Version 2.5:

•	Registration via CompuServe SWREG now available.

•	Moved SSE Options to a new dialog.

•	Changed the first level SSE dialog to the SSE Control Panel.

•	Added the Windows Screen Saver Specification to the help file.

Version 2.51:

•	The contact information for SSE changed.

•	Added Secure Screen as an incentive to register SSE.

•	Miscellaneous help file changes and amplifications.

•	Minor changes to the pricing structure of SSE.

•	Executable file size increased primarily because the splash screen is no longer stored as a compressed bitmap.  Windows could not handle the compressed format in some cases.

•	Fixed minor bug which showed incomplete saver name under rare circumstances.

•	Fixed bug which displayed a blank message box for invalid delay values.

Version 2.52:

•	More help file changes and amplifications.

•	Fixed bitmap anomaly; reduced executable file size.

•	Minor cosmetic changes.


Contacting the Author

SSE was developed by Allen Jackson.  Support is available for registered and unregistered users; I can be reached in descending order of preference as follows:

CompuServe:	72357,644

Internet:	72357.644@compuserve.com

Channel1 BBS:	(617) 354-8873
Once online: J MAILBOX

The current version of SSE can be found in the following locations:

CompuServe	GO WINFUN	(Windows Fun Forum)
GO ZNT:PBSUTI	(Ziff Public Brand Software Utilities)

Internet:	http://www.acs.oakland.edu/oak/SimTel/win3/scrsaver.html

Channel1 BBS:	(617) 354-8873

I can also be contacted via U. S. Mail with any issue regarding SSE at:

P. O. Box 20457

Atlanta, GA  30325


Terms and Conditions

The use of SSE is subject to the following terms and conditions:

Unregistered users are granted a limited license to use SSE for up to 30 days for the purpose of determining whether it is suitable for their needs.  Continued use of SSE requires registration.  The continued use of unlicensed copies of SSE beyond the evaluation period by any person, business, or government agency is strictly prohibited.

Upon registering, you will be provided with the registration code necessary to personalize your copy of SSE.  This eliminates the "UNREGISTERED SHAREWARE" notice on the splash screen and installs the registered name in the about box as evidence of registration.

Any terms and conditions associated with SSE, including but not limited to pricing, are subject to change without notice.

Disclaimer


Disclaimer

This information should be implied, because everyone using shareware knows of the possible risks, but here it is anyway...

The author of Screen Saver Enhancer ("SSE") specifically disclaims all warranties, expressed or implied, including but not limited to implied warranties of merchantability and fitness for a particular purpose, with respect to the SSE software and associated supporting files.  The author shall have no liability with respect to any loss or damage directly or indirectly arising out of the use of SSE.  Without limiting the foregoing, the author shall not be liable for any loss of profit, interruption of business, damage to equipment or data, including but not limited to direct, indirect, special, incidental, or consequential damages.  The software remains the property of the author and may not be modified in any way.

In other words, SSE is not warranted to do anything useful at all, up to and including, nothing.  But, if by some chance you find that you want to use it anyway, you are doing so at your own risk.

That ought to do it.

Terms and Conditions


About Screen Savers

Screen savers were first introduced in Multimedia Windows which was an extension to Windows 3.0.  Somebody must have liked the idea, because screen savers were added to Microsoft Windows 3.1 and have been in every version since.

According to Microsoft, screen savers exist for two main reasons:

•	To avoid phosphor burn caused by static images on a screen

•	To conceal sensitive information left on a screen

The first reason is not such a problem nowadays.  Unfortunately, little was done to the screen saver mechanism in Windows to assist with the more important second reason.  SSE fills that void, and goes well beyond.

The Desktop applet in Windows Control Panel lets users select from a list of screen savers, specify how much time should elapse before the screen saver is started, configure screen savers, and preview screen savers.  The SSE Control Panel replaces that function!  Once a screen saver is chosen via the control panel, Windows monitors keystrokes and mouse movements, starting the screen saver after a period of inactivity. However, Windows does not start the screen saver if any of the following conditions exist:

•	The active application is not a Windows application (e.g. MS-DOS).

•	A computer-based training (CBT) window is present.

•	Windows notifies the active application that it is about to save the screen, but the application answers in such a way to prevent the screen saver from activating.

In Windows 3.1, SSE will circumvent these restrictions with the exception of an MS-DOS Full Screen session.  The solution is not to run DOS full screen; it works just as well as a window.  Without full screen DOS applications present, SSE can save the screen at any time.  Although Windows 3.1 does not blank the screen if MS-DOS is the active application, this is not the case with Windows 95; Windows 95 will blank even a full screen DOS session.

Note that the use of a screen saver can degrade performance on a workstation that is sharing resources (e.g. running Windows for Workgroups). If you will be sharing resources on your computer specify a screen saver such as Secure Screen, Marquee, or Stars, which are not CPU intensive to provide the best resource sharing performance.

For more information see the Windows Screen Saver Specification.


Windows Screen Saver Specification

This specification was pulled together based on my experience with Windows screen savers.  This is all in accordance with Microsoft's specifications.  I have provided it here in the sincere hope that screen saver authors pay attention!

Screen savers should contain specific variable declarations, exported functions, and resource definitions. The static-link library SCRNSAVE.LIB (included with the SDK) contains the WinMain function and other startup code required for a screen saver. To create a screen saver, you create a source module containing specific function and variable definitions and link it with SCRNSAVE.LIB. Working screen savers can also be created with Visual Basic, but they do not strictly meet all of the specifications outlined here.  Your screen saver module is responsible only for configuring itself and for providing visual effects.

When your screen saver starts, the startup code in SCRNSAVE.LIB creates a full-screen window. The window class for the screen saver window is declared as follows:

WNDCLASS cls;

cls.hCursor        = NULL;

cls.hIcon          = LoadIcon(hInst, MAKEINTATOM(ID_APP));

cls.lpszMenuName   = NULL;

cls.lpszClassName  = "WindowsScreenSaverClass";

cls.hbrBackground  = GetStockObject(BLACK_BRUSH);

cls.hInstance      = hInst;

cls.style          = CS_VREDRAW | CS_HREDRAW |

                     CS_SAVEBITS | CS_DBLCLKS;

cls.lpfnWndProc    = ScreenSaverProc;

cls.cbWndExtra     = 0;

cls.cbClsExtra     = 0;

Your source module provides the ScreenSaverProc window procedure. Your resource-definition file supplies the icon identified by ID_APP. This icon is visible only if your screen saver is run as an .EXE (to be run by Control Panel, a screen saver must have the .SCR filename extension) .

Your source should include SCRNSAVE.H which defines the function prototypes for the screen saver functions in SCRNSAVE.LIB.  You should also define the idsAppName string which contains the screen saver name in the form "Screen Saver.Name", where Name is a unique name for your screen saver. For example, a screen saver named "Turkey Shoot" would include the following line in the STRINGTABLE statement in its resource file:

STRINGTABLE PRELOAD

BEGIN

    idsAppName          "Screen Saver.Turkey Shoot"

    .

    .  /* other strings */

    .

END

If your screen saver stores configuration information, it should use the idsAppName string as the application heading for the configuration block in the CONTROL.INI file.  SCRNSAVE.LIB uses the application name stored in the idsAppName STRINGTABLE statement as the CONTROL.INI application heading. Your application can use the LoadString function to retrieve the name of the heading from CONTROL.INI and then use the WritePrivateProfileString and WritePrivateProfileInt functions to store the configuration information.

Your application should also declare the following global variables, which are defined in SCRNSAVE.LIB:

extern HANDLE hMainInstance;

extern HWND   hMainWindow;

The hMainInstance variable contains the instance handle of your application. The hMainWindow variable contains the window handle of the screen saver window.

Your screen saver module must include a ScreenSaverProc window procedure to receive and process messages for the screen saver window. The ScreenSaverProc window procedure must pass unprocessed messages to the DefScreenSaverProc function rather than to the DefWindowProc function.

Your ScreenSaverProc window procedure can substitute its own actions for the message handling performed by DefScreenSaverProc.  The ScreenSaverProc window procedure must be exported by including it in the EXPORTS section of your module-definition (.DEF) file.

And the most important part, the DESCRIPTION statement in your module-definition file must use the following format (this is not optional):

DESCRIPTION 'SCRNSAVE : description'

There is much more than this to even a simple screen saver, but it should get most folks pointed in the right direction.  Please find the Microsoft documentation related to screen savers for further information.

Incidentally, this most common violations of the specification occur in the following places:

•	Not using "WindowsScreenSaverClass" as the class name.

•	Not using the "SCRNSAVE : name" format properly.

•	Not using "Screen Saver.Name" for the CONTROL.INI file.

•	Not using "PWProtected=" for password protected screen savers.

•	Not using the [ScreenSaver] section of CONTROL.INI to store the password.

With paid registration, I include my favorite shareware screen savers on disk to those who are interested.  These are the best of the best in my opinion.  If you would like yours included (or excluded), please let me know.  The disk also includes a replacement for Microsoft's "Blank Screen" called Secure Screen.

Bottom line -- a specification does exist, albeit rather loose.  At the very least, Microsoft has a number of examples that came with Windows 3.1.  Rip them apart and take a look at how those were done, look in the CONTROL.INI file, and use the headers and libraries that Microsoft provided with their software development kits.  Microsoft even supplies a sample saver called Bouncer that is more than enough to get started.