From:    William A. Rowe, Jr. 
Date:    June 7th '00
Subject: service monitoring in Apache 1.3.13

The concept for a taskbar monitor has been thrown around
for a very long while.  1.3.13 introduced Win9x services,
and that added fuel to the mix.  Here are some sideband
observations I've made for other developers...

About Apache as a console, don't start Apache hidden without
any command line arguments if you want to launch it yourself
in a hidden window (it will do the classic test for 
AllocConsole/FreeConsole)... drop in some arguments such as
the -f or -r option and it will fly without thinking it is a 
service under 9x and NT.

Rule two, don't use --ntservice as an argument, ever.  Only
the Windows NT Service Control Manager is allowed to pass that
flag, and only that flag, when it runs Apache.exe.  Do use 
--ntservice as the sole argument to the executable name if 
you are installing an Apache NT service yourself.

Rule three, use -k start and -n name when maintaining the
HKLM/Software/Microsoft/Windows/CurrentVersion/RunServices
list, since there is no other way for Apache to know what 
the service is named :)  And look at any 9x installed service's 
RunServices entry in the registry for the start service semantic.

Rule four, use the WinNT Service Control Manager exclusively
for starting, stopping and restarting Apache as an NT service.
The restart signal is the value 128, as documented in service.h 
and service.c - this will continue to work in Apache 2.0.  If
it fails, you are handling an older version (pre 1.3.13) of
Apache, and need to stop and then start the service instead.

Rule five, use the legacy pid-named events to signal Win9x 
service Apache to restart and stop the service.  But don't
bother looking for httpd.pid files... you can get the pid
right from the hidden service control window.  Apache 1.3.13
and 2.x create a hidden window named for the name of the 
service (without the spaces), with a window class of
"ApacheWin95ServiceMonitor", so can use FindWindow to track 
down running Win9x services.  See the service.c code for how 
I accomplished this pretty simply in the -k stop/-k restart
handler.

Taskbar Monitor App
-------------------

Basic requirements: a C code application using strictly the
Win32 API, and not MFC or other Win32 frameworks.  Could use
the service.c module to share some basic functions.  That
module could be extended in Apache 2.0 to make this all easier.

I think we are looking for an external app that simply acts 
as a monitor or allows a stopped service to be started.  If 
the user logs off, we loose the monitor app, but installed as 
a shortcut in the Start group or in the registry key
HKLM/Software/Microsoft/Windows/CurrentVersion/Run
we will be just fine.  I'd like to see the monitor run only
one instance to monitor all running services, for memory
and resource conservation.

I was thinking that the hover/iconbar title would tell them 
"Test service is running", or "Test service is stopped".
If they left click, they could stop or restart, or simply
start if it is stopped.  There could be a preference that
each service doesn't get it's own individual task icon unless 
it is running, if it is a manual start service (or missing 
from the RunServices list, which is the equivilant under 9x).

If a specific service is set to Auto start or is in the 
RunServices Win9x registry key, we must show them the stopped 
icon, of course.  We might also keep the icon for any running
service that stops abruptly.  But there could be a 'single 
icon' option for the taskbar icon monitor that says show only
a single status icon, for simplicity if the administrator runs
many Apache services.

But I was hoping that any right click would provide a menu
of all Apache services with their status.  e.g.
  Test service is stopped
  Apache_2 service is running
  MyWeb service is running
and each would do the logical submenu, same as if that
specific taskbar icon were left clicked, offering to start or
offering to stop or restart the server, as appropriate.

Finally, to identify all installed Apache services, just query 
the registry key HKLM\SYSTEM\CurrentControlSet\Services for any 
key that has the ImagePath value of "...\Apache.exe"... (quotes
are significant here, if the leading quote is ommitted the 
entire string ends with the text \Apache.exe - based on Apache's 
own service installer in every released version.)
