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: 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