                                    SS
                          A Screen Saver Utility
                             For Windows 3.0

                        Version 1.5  March 12,1991
                        Copyright 1991 Tom Wheeler
                                [72037,1742]


The programs and documentation contained herein are hereby placed in the
public domain.  You may use any portion of this material as you see fit
for your own personal use provided no part of anything contained herein
is used or distributed commercially.

This material may not be distributed unless all modules listed below
are included in the final distributed version:

                LIBENTRY ASM      2481 11-02-90   9:21p
                README   TXT      6585 03-12-91   6:22p
                SAVE     BMP      8310 11-01-90   9:59p
                SS       C       19998 03-12-91   4:09p
                SS       DEF       397 03-12-91   9:06a
                SS       DLG      1556 01-24-91   8:01p
                SS       EXE     21088 03-12-91   5:04p
                SS       H        1271 03-12-91   9:55a
                SS       ICO       766 10-13-90  11:33a
                SS       MAK      2229 03-12-91   5:03p
                SS       RC        926 11-02-90   6:17p
                SSHOOK   C        5887 03-12-91   9:55a
                SSHOOK   DEF       377 03-12-91  10:21a
                SSHOOK   DLL      2208 03-12-91   5:02p
                SSHOOK   MAK      2149 03-12-91   5:02p
                SSHOOK   RC        973 10-11-90   8:42p

No claim of suitability of use is made for these programs.  The user is
solely responsible to determine whether or not these programs perform
properly on any given computer system.

The use of this program is quite simple.  Execute the program "SS.EXE" by
any means desired from within Windows 3.0.  Make sure that the dynamic link
library "SSHOOK.DLL" is available in the directory the program is being
executed from or that it is placed in a directory that can be located with
the "PATH" environment variable.

The program initializes as an Icon and cannot be maximized.  Click on the
Icon to select its system menu and choose the "Time" menu option to set the
Activation Time of the Screen Saver.  The Activation Time is initialized to
10 minutes the first time the program is run.  Enter the desired Activation
Time and click "Save" to permanently save this value or "Cancel" to abort.
This value will be recorded in your "Win.Ini" Windows initialization file
and will be used every time that "SS" is run until changed again.

"SS" detects keystrokes and mouse movements.  If "SS" detects that no keys
have been pressed or that the mouse has not moved within the period of time
defined by the Activation Time, the screen will blank and a graphic icon
will be randomly moved around the screen until either a key is pressed, the
mouse is moved, or a mouse button is clicked.  "SS" cannot detect keystrokes
entered in a DOS application running under Windows so it is possible that
the screen will be blanked if you are running a DOS application in a Window.
Full screen DOS applications do not experience this problem.

This program was written as an experiment to try out various Windows
functions, primarily the use of the SetWindowsHook function, bitmap
manipulation, and the creation of a DLL (dynamic link library).  The make
scripts were generated using the PWB (Programmers Work Bench) included with
Microsoft C 6.0.  The program was compiled and linked with Microsoft C 6.0
and Link 5.1.

     ========================= VERSION 1.4 =========================

As stated above, SS was primarially written as a programming exercise.  Due
to the suprising number of downloads, however, I have decided to create this
release to fix some problems noted by many of you.

Previous versions had problems capturing mouse input cleanly.  It seems that
this is quite a trickey problem under Windows.  This version attempts to 
correct subtle problems encountered previously.

Formerly, SS set an internal timer to determine when to sample mouse input.
Upon expiration of the timer, it would start capturing mouse input for all
of Windows to determine if the system was idle or not.  Mouse capture would
not be released until either some mouse or keyboard activity was detected, or
when the screen was actually blanked.  Although this was reliable for most 
purposes, it could cause windows, menus, scroll bars, buttons, etc. to
momentarially loose some messages.  This would result in strange behavior
such as a menu or scrollbar "freezing", a double click to be missed, etc.

This version takes a totally different (and I hope safe) approach to looking
at mouse activity.  The mouse timer now expires once a second.  When this
happens SS looks to see which window is currently active.  The active window
is then "sub-classed" (for non-programmers, this is a technique of capturing
a windows messages).  At this point, all messages can be filtered and mouse
movement and mouse buttons can be sampled while the mouse is active within
that window (which is usually most of the time).

The only problem I am aware of with this release is its inability to detect
keystrokes in a DOS application when running in 386 Enhanced Mode (if you
are running in Real or Standard Modes it is meaningless to try to detect DOS
keystrokes anyhow).  If anyone out there knows of a technique to do this, I
would greatly appreciate hearing from you.

     ========================= VERSION 1.5 =========================

This version takes yet another (and much safer) approach to hooking input
messages.  The module SSHOOK.C was modified to hook WM_GETMESSAGE instead
of WM_KEYBOARD.  By filtering the messages before they are passed along to
their respecrive window procs, SS can safely monitor keyboard and mouse
input system wide.  This technique should finally clean up some of the more
obscure problems encountered in previous releases.

In addition, I have since come across some documentation from Microsoft trying
(in vain) to explain problems with the WEP termination function in DLLs.  It
seems that this procedure does not reliably get called unless the DLL was
initially loaded using the LoadLibrary() function call (which this program
does not do).  I therefore added a KillHook() function and explicitely call
it from SS when terminating.  This function now does what WEP previously did.




         ----------------end-of-author's-documentation---------------

                         Software Library Information:

                    This disk copy provided as a service of

                           Public (software) Library

         We are not the authors of this program, nor are we associated
         with the author in any way other than as a distributor of the
         program in accordance with the author's terms of distribution.

         Please direct shareware payments and specific questions about
         this program to the author of the program, whose name appears
         elsewhere in  this documentation. If you have trouble getting
         in touch with the author,  we will do whatever we can to help
         you with your questions. All programs have been tested and do
         run.  To report problems,  please use the form that is in the
         file PROBLEM.DOC on many of our disks or in other written for-
         mat with screen printouts, if possible.  PsL cannot debug pro-
         programs over the telephone, though we can answer questions.

         Disks in the PsL are updated  monthly,  so if you did not get
         this disk directly from the PsL, you should be aware that the
         files in this set may no longer be the current versions. Also,
         if you got this disk from another vendor and are having prob-
         lems,  be aware that  some files may have become corrupted or
         lost by that vendor. Get a current, working disk from PsL.

         For a copy of the latest monthly software library newsletter
         and a list of the 3,000+ disks in the library, call or write

                           Public (software) Library
                               P.O.Box 35705 - F
                            Houston, TX 77235-5705

                                 Orders only:
                                1-800-2424-PSL
                              MC/Visa/AmEx/Discover

                          Outside of U.S. or in Texas
                          or for general information,
                              Call 1-713-524-6394

                          PsL also has an outstanding
                          catalog for the Macintosh.


