═══ 1. Usage ═══ Select between the following sections: action profiles predefined action profiles SendYes! GUI SendYes! WPS program objects commandline parameters ═══ 1.1. action profiles ═══ The SendYes! graphical user interface allows the user to create, copy, edit and delete action profiles. Action profiles consist of the following data:  the message text of the message box which is to be intercepted  the pushbutton to act on. All possible pushbuttons for standard message boxes can be selected and it is the users responsibility to select a pushbutton which is really part of the message box to be processed automatically.  the action to take. This can be: - pressing the button - setting the button as the default button and set the focus on it Note: This action is perfomed only once when the message box comes up for the first time - disabling the button Note: - The message text of an action profile must be unique among all action profiles so that only one action profile exists for every message box that can come up. - the message text of predefined action profiles cannot be edited. However the pushhbutton to act on and the action to take can be changed. - The action you select is performed on the button you select every time the message box receives the focus (except for setting the pushbutton as the default pushbutton, that is done only once). So it is not very useful to select pressing the help button, although it is possible. If you use an action profile set up like this, it will activate the help every time you click onto the message box, because then the message box receives the focus and the selected action is performed. In that case close the message box first and then the help window. ═══ 1.2. predefined action profiles ═══ Predefined action profiles are different from user defined action profiles:  SendYes! creates and displays them automatically the first time it is started  they cannot be deleted  their message text is read out of PM resources and cannot be edited However the pushhbutton to act on and the action to take can be changed for predefined action profiles. As the message texts for these predefined action profiles are read out of PM resources, they will work under every OS/2 WARP version, no matter what language specific version you use. Also the INI file that SendYes! creates to store it's action profiles will not contain these message texts, so this file can be exchanged between users of OS/2 versions of different language. The predefined action profiles are first of all for to support the functionality of previous versions of SendYes! without enforcing the user to set up action profiles for that himself. To enable the user to distinct between predefined and user defined action profiles, every predefined action profile entry is displayed with a preceeding label. In the current version SendYes! comes with the following predefined action profiles for to process confirmation message boxes for:  closing an OS/2 windowed text session. With this action profile activated also confirmation message boxes for closing both DOS windowed and fullscreen text sessions are processed. This action profile is labeled OS/2 win close  closing an OS/2 fullscreen text session. This action profile is labeled OS/2 fs close  shutdown. This action profile is labeled shutdown To find out wether the predefined action profiles of SendYes! are working on your OS/2 for closing a DOS or OS/2 Windowed or Fullscreen Text session without confirmation message boxes, refer to section How can I test predefined action profiles ? If all text sessions close well without confirmation boxes, everything is fine. If not, please email and tell me so... Meanwhile you can define an action profile which will close these textsessions without confirmation boxes on YOUR system. ═══ 1.3. SendYes! GUI ═══ The SendYes! GUI consists of a notebook control, which can nearly be used like a settings notebook of a WPS object. This notebook comes up if you start SendYes! without any parameters or execute the icon SendYes!. Note: Only one instance of the SendYes! GUI can be active at a time. The notebook contains two notebook pages and a common dialog is used for to create, copy or edit action profiles:  Session Page  Actions Page  New / Edit / Copy Dialog ═══ 1.3.1. Session Page ═══ On this page you can  start the SendYes! hook executable and thus activate the SendYes! functionality. Use the checkbox activate SendYes! to activate or deactivate SendYes!  define wether the SendYes! hook executable is loaded by a separate process or by the PMSHELL process Note: In the current version of SendYes! the hook executable is always loaded by a separate process, so this setting cannot be changed  define wether the SendYes! hook executable is unloaded on deactivation or not Note: In the current version of SendYes! the hook executable is always unloaded on deactivation, so this setting cannot be changed ═══ 1.3.2. Actions Page ═══ On this page you can define action profiles, and activate or deactivate self defined and predefined action profiles. All profiles are placed in two lists:  the list labeled Defined action profiles contains defined action profiles, which are not active. Profiles located in this list can be activated, edited, copied or deleted and new action profiles can be created. Note: Predefined action profiles cannot be deleted and their message text cannot be edited.  the list labeled Active action profiles contains activated action profiles. If the SendYes! hook executable is activated on the Session Page, the action profiles are executed when the apropriate message boxes come up. Action profiles in this list can only be edited, deleted or deactivated. Creating new action profiles or copying existing profiles is possible only within the list labeled Defined action profiles. Also the predefined action profiles for closing text sessions (and only those) can be tested: SendYes! then creates the appropriate text sessions which you can close easily via the window list. Note: Predefined action profiles cannot be deleted and their message text cannot be edited. Although you can manipulate action profiles either with the keyboard or with the mouse, the usage of the mouse is far easier. The new enhanced listbox controls, which incorporate the functionality of the Direct Manipulation ListBox (DMLB) control and the MultiColumn ListBox (MCLB) control, allow to use the mouse as follows:  use the right mouse button within the lists to bring up context menus for to perform the actions on action profiles as described above.  as an alternative for some actions within the context menus use drag&drop: - between both lists for to activate or deactivate action profiles. - within the list labeled Defined action profiles for to copy an existing action profile. For more information on how to manipulate action profiles refer to section How can I ... ? SendYes! comes with predefined action profiles for being able to process some standard system message boxes. You can test some of them for to make sure that they work properly. Refer to section predefined action profiles How can I test predefined action profiles ? ═══ 1.3.3. New / Edit / Copy Dialog ═══ Within this dialog you can create a new or copy or edit existing action profiles. ═══ 1.4. SendYes! WPS program objects ═══ The SendYes! WPS installation program creates the following objects:  a SendYes! folder on the desktop, which contains the following program reference objects: - Initialize SendYes! - SendYes! - SendYes! V2.0 Help - SendYes! WPS installation program - SendYes! WPS deinstallation program  a shadow of Initialize SendYes!, which is placed into the folder Startup, so that SendYes! is initialized on every startup of OS/2. For more information on intitializing SendYes! on system startup refer to How can I initialize SendYes! ?  a shadow of the folder Startup, which is placed into the SendYes! folder, so that you can easily access this folder in order to delete the shadow of Initialize SendYes! or place it into the startup folder again.  a shadow of SendYes!, which is placed into the folder System Setup. ═══ 1.4.1. Initialize SendYes! ═══ This icon loads the SendYes! hook executable, if the current settings state that SendYes! is active. A shadow of this icon is placed into the Startup folder by the installation program so that SendYes! is initialized on every system startup. For more information on intitializing SendYes! refer to How can I initialize SendYes! ? Note:  If the environment variable RESTARTOBJECTS is set to the value of NO within CONFIG.SYS, objects residing in the Startup folder are not processed automatically on System Startup. Then SendYes! must be initialised via a call in STARTUP.CMD or manually initialised. For more information on intitializing SendYes! on system startup refer to How can I initialize SendYes! ?  You can load the SendYes! hook executable also via the SendYes! GUI by performing the following steps: 1. open the SendYes! GUI 2. select the Session Page 3. check the checkbox labeled activate SendYes! 4. the status field above the pushbuttons displays the new status of SendYes!, if SendYes! was able to load the hook executable.  No notification message box is displayed. Only in case of errors an error message box is displayed.  This icon is equivalent to executing [start] SENDYES /INITIALIZE on the commandline in the SendYes! directory. ═══ 1.4.2. SendYes! ═══ This icon starts the SendYes! GUI, where you can modify the current settings of the program. Note:  This icon is equivalent to executing [start] SENDYES on the commandline in the SendYes! directory. ═══ 1.4.3. SendYes! V2.0 Help ═══ This icon brings up this INF file. Note:  This icon is equivalent to executing README on the commandline in the SendYes! directory. This will display the INF file for the currently selected language. ═══ 1.4.4. SendYes! WPS installation program ═══ This icon executes the installation program for the SendYes! WPS program objects. Within this program you can select the language used by SendYes! and recreate the SendYes! WPS program objects, so that newly selected language is used for the object titles. ═══ 1.4.5. SendYes! WPS deinstallation program ═══ This icon executes the deinstallation program for the SendYes! WPS program objects. With this program you can remove the SendYes! WPS program objects. Note:  The SendYes! WPS deinstallation program does not remove any files from your harddisk. To completely deinstall SendYes! you must also remove the files of the SendYes! package. ═══ 1.5. commandline parameters ═══ The following parameters can be used to interact with SendYes! from the commandline: /INITIALIZE /LOAD /STATUS /UNLOAD /BATCH /ACTIVATE /QUIET /DEACTIVATE /? General notes on switch parameters:  the parameter names are used case insensitive  Instead of slashes you can also use the minus sign - that means that for example specifying /load and -load is equivalent  it is sufficient to specify only the first character of the parameter name - that means that /b and /batch (or -b and -batch) are also equivalent. ═══ 1.5.1. /INITIALIZE ═══ This parameter is for to initialize SendYes! on system startup. If the current SendYes! settings state that the hook executable should be active, SendYes! acts as if the parameter /LOAD was specified. Note:  No notification message box is displayed. Only in case of errors an error message box is displayed. ═══ 1.5.2. /LOAD ═══ This parameter loads the SendYes! hook executable, if it is not already loaded. If the hook executable can be loaded successfully, the SendYes! functionality is available and message boxes, which apply to activated action profiles, are processed automatically. Note:  If the hook executable can be loaded successfully, a notification message box is displayed.  If the hook executable is already loaded or cannot be loaded, an error message box is displayed.  Both the notification and the error message box can be surpressed by also specifiying the parameter /BATCH. Instead a notification or an error beep is generated. In addition the notification and error beeps can be supressed with the parameter /QUIET. ═══ 1.5.3. /UNLOAD ═══ This parameter unloads the SendYes! hook executable, if it is active. When the hook executable is unloaded, the SendYes! functionality is not longer available and message boxes are no more processed automatically. Note:  If the hook executable can be unloaded successfully, a notification message box is displayed.  If the hook executable is not loaded or cannot be unloaded, an error message box is displayed.  Both the notification and the error message box can be surpressed by also specifiying the parameter /BATCH. Instead a notification or an error beep is generated. In addition the notification and error beeps can be supressed with the parameter /QUIET. ═══ 1.5.4. /ACTIVATE ═══ This parameter works exactly like /LOAD. It is implemented just as a counterpart to /DEACTIVATE. ═══ 1.5.5. /DEACTIVATE ═══ In the current version of SendYes! this parameter works exactly like /UNLOAD. This will change when SendYes! supports deactivating the hook executable without unloading it. Then /DEACTIVATE is used for this deactivation. ═══ 1.5.6. /STATUS ═══ This parameter queries wether the SendYes! hook executable is active or not. A status message box is displayed and the following ERRORLEVEL is returned: 1 SendYes! is active 0 SendYes! is not active Note:  When you specify /STATUS, all other parameters but /? are ignored.  The status message box can be surpressed by also specifiying the parameter /BATCH. Unlike specifying /BATCH together with other parameters no notification or error beep is generated here. ═══ 1.5.7. /BATCH ═══ This parameter surpresses message boxes when processing the parameters /LOAD, /UNLOAD, /ACTIVATE, /DEACTIVATE or /STATUS. Instead of displaying a message box, a notification or an error beep is generated. This beep can be surpressed by also specifiying /QUIET. When using /BATCH together with /STATUS, no notification or error beep is generated by default. ═══ 1.5.8. /QUIET ═══ This parameter surpresses notification and error beeps when using the parameter /BATCH. ═══ 1.5.9. /? ═══ This parameter gives a brief help text about the parameters. When you specify /?, all other parameters are ignored. Instead of /? also specifying /HELP is valid. ═══ 2. How can I ... ? ═══ Select between the following sections: How can I ... ... load SendYes! ? ... unload SendYes! ? ... activate SendYes! ? ... deactivate SendYes! ? ... query the SendYes! status ? ... use SENDYES.EXE in batch files ? ... initialize SendYes! ? ... start the SendYes! GUI ? ... select an action profile ? ... create action profiles ? ... copy an action profile ? ... activate action profiles ? ... deactivate action profiles ? ... edit action profiles ? ... test predefined action profiles ? ... change the language used ? ═══ 2.1. How can I load SendYes! ? ═══ To load the SendYes! hook executable  perform the following steps within the SendYes! GUI: 1. open the SendYes! GUI 2. select the Session Page 3. check the checkbox labeled activate SendYes! 4. the status field above the pushbuttons displays the new status of SendYes!, if SendYes! was able to load the hook executable.  or execute the following command on the commandline in the SendYes! directory: [start] SENDYES /LOAD [/BATCH] [/QUIET] ═══ 2.2. How can I unload SendYes! ? ═══ To unload the SendYes! hook executable  perform the following steps within the SendYes! GUI: 1. open the SendYes! GUI 2. select the Session Page 3. uncheck the checkbox labeled activate SendYes! 4. the status field above the pushbuttons displays the new status of SendYes!, if SendYes! was able to unload the hook executable.  or execute the following command on the commandline in the SendYes! directory: [start] SENDYES /UNLOAD [/BATCH] [/QUIET] ═══ 2.3. How can I activate SendYes! ? ═══ In the current version of SendYes! activating the SendYes! hook executable is in fact the same as loading it. To activate the SendYes! hook executable  perform the following steps within the SendYes! GUI: 1. open the SendYes! GUI 2. select the Session Page 3. check the checkbox labeled activate SendYes! 4. the status field above the pushbuttons displays the new status of SendYes!, if SendYes! was able to load the hook executable.  or execute the following command on the commandline in the SendYes! directory: [start] SENDYES /ACTIVATE [/BATCH] [/QUIET] ═══ 2.4. How can I deactivate SendYes! ? ═══ In the current version of SendYes! deactivating the SendYes! hook executable is in fact the same as unloading it. To deactivate the SendYes! hook executable 1. open the SendYes! GUI 2. select the Session Page 3. uncheck the checkbox labeled activate SendYes! 4. the status field above the pushbuttons displays the new status of SendYes!, if SendYes! was able to unload the hook executable.  or execute the following command on the commandline in the SendYes! directory: [start] SENDYES /DEACTIVATE [/BATCH] [/QUIET] ═══ 2.5. How can I query the SendYes! status ? ═══ To query the status of the SendYes! hook executable  perform the following steps within the SendYes! GUI: 1. open the SendYes! GUI 2. select the Session Page 3. the status field above the pushbuttons displays the status of SendYes!  or execute the following command on the commandline in the SendYes! directory: [start] SENDYES /STATUS [/BATCH] ═══ 2.6. How can I use SENDYES.EXE in batch files ? ═══ To use SENDYES.EXE within batch files, use the parameter /BATCH. This way all notification and error message boxes are surpressed. You can always check the result via the OS/2 ERRORLEVEL batch variable within normal batch files or the variable rc within REXX batch files: Except when querying the status of the SendYes! hook executable, the ERRORLEVEL is always zero when SENDYES.EXE was executed successfully. Otherwise an OS/2 errorcode is returned. Note:  if you use /BATCH for to surpress notification and error message boxes, error and notification beeps are generated instead to give an audio feedback to the user. If you want to surpress those beeps, use /QUIET. ═══ 2.7. How can I initialize SendYes! ? ═══ The SendYes! installation program puts a a shadow of Initialize SendYes! into the folder Startup, so that SendYes! is initialized on every startup of OS/2. This only works if the environment variable RESTARTOBJECTS in CONFIG.SYS is set to a value that lets the WPS automatically process all objects residing in the Startup folder. The environment variable may be set to the following values within CONFIG.SYS: All programs that were active on shutdown are restartet automatically on system startup. Also all objects that reside in the Startup folder are opened on startup. SendYes! can be initialized via the shadow of Initialize SendYes! in the Startup folder. STARTUPFOLDERSONLY Programs, that were active on shutdown, are not restartet automatically on startup. All objects that reside in the Startup folder are opened on startup. (BWT, yes, there can be more that one startup folder, although OS/2 creates only one). SendYes! can be initialized via the shadow of Initialize SendYes! in the Startup folder. NO No programs are started automatically by the WPS. SendYes! CANNOT be initialized via the shadow of Initialize SendYes! in the Startup folder. Instead put the command the following command into your STARTUP.CMD [start] d:\path\SENDYES /INITIALIZE where d:\path is the full qualified pathname of the SendYes! directory, or execute Initialize SendYes! manually. ═══ 2.8. How can I start the SendYes! GUI ? ═══ To start the SendYes! GUI, execute the icon SendYes! or execute the following command on the commandline in the SendYes! directory: [start] SENDYES ═══ 2.9. How can I select an action profile ? ═══ To select an action profile, perform the following steps:  open the SendYes! GUI. Refer to How can I start the SendYes! GUI ?  Select the Actions Page.  To select an action profile with the keyboard, use the TAB key to set the focus onto the list where the profiles is listed. Then use the arrow keys to select the appropriate profile. You can bring up the context menu for that profile by pressing Enter. This applies also if a list is empty. After setting the focus onto a list, pressing Enter also brings up the popup menu.  To select an action profile with the mouse, click on it. You can bring up the context menu for that profile by clicking with the right mouse button on it. This applies also if a list is empty. Clicking with the right mouse button onto the list also brings up the popup menu. ═══ 2.10. How can I create action profiles ? ═══ To create an action profile, perform the following steps on the Actions Page:  Bring up the context menu of the list Defined action profiles. Refer to How can I select an action profile ?  Select the menu item New...  SendYes! brings up a dialog where you can fill in the settings for the new profile. Refer to action profiles New / Edit / Copy Dialog ═══ 2.11. How can I copy an action profile ? ═══ To copy an existing action profile, perform the following steps on the Actions Page:  Select an action profile within the list labeled Defined action profiles. To copy an action profile wich is activated and thus located in the list labeled Active action profiles, deactivate it temporarily so that it is available for a copy operation. Refer to How can I select an action profile ? How can I deactivate action profiles ?  Select the menu item Copy...  SendYes! brings up a dialog where you can change the settings for the new profile. You must at least change the message text because this must be unique among all action profiles. Refer to action profiles New / Edit / Copy Dialog ═══ 2.12. How can I activate action profiles ? ═══ To activate an action profile, perform the following steps on the Actions Page:  If you want to use the keyboard: - Select the action profile you want to activate in the list labeled Defined action profiles and bring up the context menu. Refer to How can I select an action profile ? - Select the menu item Activate If you want to use the mouse: - Drag the action profile you want to activate from the list labeled Defined action profiles to the list labeled Active action profiles. ═══ 2.13. How can I deactivate action profiles ? ═══ To deactivate an action profile, perform the following steps on the Actions Page:  If you want to use the keyboard: - Select the action profile you want to activate in the list labeled Active action profiles and bring up the context menu. Refer to How can I select an action profile ? - Select the menu item Deactivate If you want to use the mouse: - Drag the action profile you want to activate from the list labeled Active action profiles. to the list labeled Defined action profiles. ═══ 2.14. How can I edit action profiles ? ═══ To edit an action profile, perform the following steps on the Actions Page:  Select the action profile you want to edit and bring up the context menu. The action profile might both be activated or not. Refer to How can I select an action profile ?  Select the menu item Edit...  SendYes! brings up a dialog where you can change the settings for the profile. ═══ 2.15. How can I test predefined action profiles ? ═══ To test predefined action profiles for closing text sessions, SendYes! creates the appropriate text sessions automatically for you so that testing the profiles is much easier. When the sessions are created, bring up the Window List and close them all: The confirmation message boxes should not appear. Of course these profiles work also with every other text session. To let SendYes! create the text sessions for you, perform the following steps on the Actions Page:  If not yet done, activate one or better both predefined action profiles for closing text sessions. They are labeled - OS/2 win close and - OS/2 fs close. Refer to How can I activate action profiles ?  Select one of these action profiles (only when activated) and bring up the context menu. Refer to How can I select an action profile ?  Select the menu item Test... ═══ 2.16. How can I change the language used ? ═══ To change the language used by SendYes!, simply run the installation program again by executing the icon SendYes! WPS installation program or run the program from the commandline. In the installation program 1. select the new language to use and 2. reinstall the SendYes! WPS program objects That will also change the language used by the SendYes! GUI. Note:  The new selection of language becomes permanent only if you reinstall the SendYes! WPS program objects. If you exit the installation program before doing that, a change of language is ignored. ═══ 3. Technical details ═══ Select between the following sections: enhanced listbox controls ═══ 3.1. enhanced listbox controls ═══ In order to provide a user fiendly interface SendYes! takes advantage of the easy to program and easy to use Direct Manipulation ListBox (DMLB) control and the MultiColumn ListBox (MCLB) PM control functionality. This enhanced functionality allows to have a multi column listbox and to support drag and drop within and between listboxes. This way it provides some of the container functionality, but is much easier to program and faster when using it. SendYes! uses a slightly modified version of the Direct Manipulation ListBox (DMLB) control. Look out for LB.ZIP on IBM ftp sites, which contains the complete source code and INF reference files. For more information on programming with these controls control, see OS/2 Developer Magazine, Nov/Dec 1995. ═══ 3.1.1. Direct Manipulation ListBox (DMLB) ═══ Excerpt from DMLB.INF: Acknowledgments This control was originally conceived at IBM Yorktown Research by Alan Warren. The control was rewritten and enhanced by Mark McMillan of IBM, Research Triangle Park, USA. Description The Direct Manipulation ListBox is a very useful enhancement for the standard PM listbox control. It supplies the capability to support drag/drop reordering of items in a listbox, and drag/drop of items from one listbox to another. ═══ 3.1.2. MultiColumn ListBox (MCLB) ═══ Excerpt from MCLB.INF: Acknowledgments This control was originally conceived at the IBM United Kingdom Warwick Development group by Charles Cooper. The control was rewritten and enhanced by Mark McMillan of IBM, Research Triangle Park, USA. Description The MultiColumn ListBox is a very useful PM custom control designed to overcome some of the limitations of the standard PM listbox and container controls. It is simpler and in many cases faster than a container, but provides multicolumn (tabular) support for display of column-oriented data. The MCLB supports individually sizable columns, optional horizontal scroll bars at the base of each column, seperate font and color support for the titles and column data, owner-drawn lists, and a simple listbox-style programming model. The MCLB can be subclassed with the DMLB (Direct Manipulation ListBox) function also supplied in this toolkit to provide drag/drop reordering capability to the MCLB. ═══ right mouse button ═══ Using the right mouse button as stated in this online help file applies to you only if you did not change the settings of the Mouse object in the folder System Setup. The following settings of the following settings notebook pages impact the way SendYes! works concerning the usage of the right mouse button. If you change them, use the mouse the way you configured it. Note that the right mouse button is normally referred to as mouse button 2. Setup  Left-handed mouse usage (switches mouse button 1 and 2) Mappings  selecting mouse button 1 for drag and drop Note: If you drag action profiles with mouse button 1 the drag cursor is not visible, but dragging still works.  selecting different settings for pop-up menus than single click of button 2 without any control keys