Program Manager Modifier 2.01

Program Manager Modifier (PMMc) is a Windows 3.1 utility which
allows you to add your own custom menu items to any Windows
application which has a menu. PMM allows frequently used
applications to be quickly launched from the keyboard, without
having to cycle and search through PM folders 

PMM as distributed is fully functional. However if you find PMM
useful please register it. The registration fee for individuals
is $5.00. For businesses a $50.00 registration fee gives an
unlimited site license. Registration fees can be sent to:

Tim Walker
TimeWalker Software
4911 Cecelia Ann Avenue
Clarkston, MI 48346

PMM 2.01 has been tested on a variety of machines with a
variety of configurations, and has (so far) worked without any
problems. However I make no guarantee about anything
associated with this software. Use it at your own risk. If you
do find something that does not work, please let me know. I can
be contacted at the above address, or through CompuServe (Tim
Walker 72010,3260).

Installing PMM

1. Copy PMM.EXE into your windows directory, or a directory
which is in the DOS PATH used when Windows is started.

2. Using an ASCII text editor (such as NOTEPAD ) create a
PMM.INI file and put this in the Windows directory. The format
of PMM.INI is shown below. (Note: do not add the dash ( - ) or
any of the text following it to the actual PMM.INI file. These
are simply comments for this document to help explain what each
line is doing).

M Me&nu3              ---  Third menu Item to be added to Program Manager

	P &Prog1=prog1.EXE			---  First menu choice under menu 3     

	P P&rog2=prog2.EXE			---  Second Menu choice under menu 3   



M M&enu2				   ---  Second menu to be added to Program Manager

	P &Prog3=prog3.pif		 --- First menu choice under menu 2   

                D			   --- Put dividing line between these menu
items

	S &Submenu	                   --- Title for cascading menu
(submenu) under menu 2

		P &Prog4=prog4.com  	---  First menu choice under  submenu

		P P&rog5=prog5.EXE	     ---  Second menu choice under submenu 
 

	E				     ---  End of submenu

	P P&rog6=prog6.EXE 	---  Third  menu choice under menu 2

M &Menu1				   ---  First menu to be added to Program Manager

	P &Prog7=prog7.EXE	   ---  First Menu choice under menu 1

Each menu entry should be on its own line. If more than one
entry is on the line, the entire line will show up as menu text
and no program will be associated with that menu item.

The first menu item in PMM.INI will be the last one added to the
menu of Program Manager. The new menu items will be added
either before the Help menu item on menus where Help is the last
menu item (To keep CUA compliance!). If no Help menu item is
present, the new menu items will be appended to the end of the
current menu. In the case of Program Manager this means the new
menu items will appear after the Window menu item, and before
Help. Thus if the PMM.INI from above was used, the menu of
Program Manager would appear as:


<Graphic Deleted>

An '&' is used before the letter which is to be used as the
keyboard activation key. In other words the &M on Menu1 will
cause the M to be underlined on the menu entry, and pressing
ALT-M from the keyboard will activate Menu1.

A 'P' is used to the indicate a program line. A program line
gives the text which is to be put on the menu and the program
which is to be associated with that text. The format is
"text=program". An equal sign is used to separate the displayed
text from the program name. Just as with the menu text, an
activation key can be given in the text by preceding the letter
with an '&'.

An 'S' as the first letter on a line indicates the beginning of
a cascading, or sub menu. All program lines ( lines starting
with a 'P') following this will be placed under the submenu
until an End Submenu line ( a line starting with an 'E' ) is
reached. Each Submenu line should have a matching End Submenu
line. In the example above Prog4 and Prog5 will only be seen
when Submenu is selected under Menu2. Submenus can be nested up
to six deep.

A 'D' is used to put a line (divider) into a menu

There is a limit of 20 main menu item which can be added, and no
single line in the file should be more than 180 characters long.

3. Add PMM to a folder by opening the folder you want it in,
selecting from Program Managers menu File, New, Program Item,
typing PMM.EXE in the command line edit box, then pressing OK.

4. Add PMM.EXE to the load line of WIN.INI. ( i.e. load=
pmm.EXE ) This will cause PMM to be run every time you start up
windows.

Removing PMM

If you want to remove PMM, returning the Program Manager menus
back to their original, go to the shell's System box (the grey
box in the upper left hand corner with a bar in it) and click
once to bring up the system menu (if you are using the keyboard
hit ALT-SPACEBAR). While PMM is running, the last entry on the
system menu will be End PMM. Click on this choice and PMM will
unload itself, returning the shell back to its original state.

Using Shells other than Program Manager

By default PMM looks for Program Manager. However if you are
using another shell, such as the Norton Desktop, then you can
tell PMM to look for this shell in two ways. First by typing
PMM and the title of the main window. For example, if you were
using the Norton Desktop for Windows the title across the main
desktop window is "Norton Desktop." To invoke PMM and have it
add menu selections to the Norton Desktop following command
would be used:

PMM Norton Desktop

This technique will work well when adding PMM to a folder. 
However it can cause some problems when trying to have PMM load
by using the load line in WIN.INI. Unfortunately Windows does
not allow command line arguments to be used on the load line. 
To get around this limitation a Title line can be added to
PMM.INI. Adding the following to PMM.INI would cause PMM to
search for the Norton Desktop as the shell:

T Norton Desktop

Adding this line has the same effect as specifying the title on
the command line. If this line is not present , and no title is
given on the command line, PMM will search for Program Manager.

PMM tries to match the name given when it is invoked with the
title of a window. The comparison is case sensitive, so make
sure you type the name EXACTLY as it appears in the window's
title bar.

About PMM

Information about PMM can be found by using the "About PMM ..."
option in the Help menu after the "About Program Manager..."
option. If no help menu selection exists on the current shell,
then there will be no "About PMM..." available in your session.

Summary of Key Characters in PMM.INI

D	-	Divider

E	-	End of Submenu

I	-	ID for menu item

M	-	Main Menu (i.e. one placed on the Program Manager menu bar)

P	-	Program

S	-	Sub Menu (i.e. a cascading menu branching off the last menu )

T	-	Title (OPTIONAL)

Additions for Version 1.1

Under Windows, menu items and other controls have unique numeric
IDs which identify them. PMM 1.0 assumed some IDs for it's own
menus, and in some cases these conflicted with the IDs already
used by the shell. To avoid these conflicts PMM has been
modified so that you can now specify the ID for a menu item. If
an ID line is placed in PMM.INI, the menu IDs for the programs
following this will start at this number, and increment by one
from there. The ID number is given in PMM by using the key
character 'I'. So for example the following line in PMM.INI
would cause the menu IDs to start at 450.

I  450

More than one ID starting point can be specified in PMM.INI, so
if your shell uses many IDs, and there is no 'hole" into which
you can fit your entire PMM menu structure, you can individually
specify the ID for each item. However, PMM does not check the
ID's for consistency, so if you overlap IDs unpredictable
results will occur.

To assist in determining what ID's are being used by your shell,
an additional utility, PMMSPY, has been included. When run,
PMMSPY will keep track of the IDs used by the shell, and suggest
a starting ID to use in PMM.INI. PMMSPY searches for the shell
specified in PMM.INI (like PMM, if none is given it uses Program
Manager). PMM Spy can be used as follows:

1) If you are running PMM, end it.

2) Run PMMSPY.exe 

3) Press the START button

4) Minimize PMMSPY

5) Select every menu item/button on your shell. This ensures
that PMMSPY catches all the IDs for your shell. Then go about
your normal computing for a while, letting PMMSPY log any other
IDs that may come about.

6) When you are confident that you have exhausted all the
options on your shell, maximize PMMSPY and press the STOP
button. PMMSPY will then calculate the suggested starting ID.
This ID is calculated by finding the biggest hole in the IDs of
the shell, and then putting PMM IDs right in the middle of this
hole. If PMMSPY cannot find a hole big enough, then you will
have to hand pick the IDs using the list generated by PMMSPY (as
the next step will explain).

7) If PMMSPY suggests an ID you can have it put this ID into
PMM.INI by selecting the MODIFY menu option and choosing the
"CHANGE PMM.INI" option. If PMMSPY's suggestion is "none, no
room" select the "Send to notepad " option from the File menu.
This will start a copy of notepad and send to it a list of ID's
found. From this list, holes in the shells IDs can be found,
and PMM.INI hand-modified to fit it's IDs into these holes. 
PMMSPY assumes NOTEPAD.EXE is either in the windows directory or
in a directory specified by the PATH environment variable.

8) End PMMSPY and start PMM.EXE

The number of PMM.INI entries shown by PMMSPY will be two
greater than is actually in the file. This is because it is
counting the two internal IDs (one for the About menu item and
one for the Exit PMM item ). If hand selecting ID's remember
that these two ID's are added directly after the last ID in
PMM.INI. This means the size of the hole for the last menu
entry has to be big enough for at least three IDs.

Additions for Version 2.00

1. Multiple instances of PMM can now be run.

2. Different .ini files can be sepcified using the /f switch . 
The format is

                        pmm /finifile.ini

where inifile.ini is the name of the file to be used. The
inifile name should include a path.

3. You can specify an application to launch from within the ini
file by using the L key character. This allows pmm to lauch and
then find the application. This way you can set up an icon so
that it will always start the application and PMM at the same
time. For example:

L Notepad.exe

will start notpad.exe. With this combination you can have
several different versions of menus for an application. Note
also that in this case you would also want to specify the title
as 

T Notepad - (Untitled)

so that PMM would attach itself to notepad and not Program
Manager.

4. You can tell PMM how long to look for the window to attach to
before giving an error message by using the W key character in
the .ini file. For example

W 10

tells PMM to wait for 10 seconds before asking you if you want
it to continue looking.

5. PMM 2.0 is now a Windows 3.1 application.

6. Because PMMSPY is should not have to be used very often (and
because I am currently working on a better way of performing
it's task) it was not updated. It will still correctly identify
the identifiers in a program, however it will give warnings when
it encounters the new key characters, and only looks at pmm.ini
in the Windows Directory.

Additions for Version 2.01

1.Fixed a bug where PMM wrote to AUX . This caused a varety of
problems, from mouse lockups to unexplained error boxs.

PMM Packing List:

PMM.EXE

PMMSPY.EXE

PMM.INI

PMM.WRI

PMM is Copyright c 1991, 1992, TimeWalker Software. All Rights Reserved
