home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 11 Util
/
11-Util.zip
/
sndys200.zip
/
nlssrc.zip
/
sndyseng.src
< prev
next >
Wrap
Text File
|
1996-02-29
|
100KB
|
2,521 lines
:userdoc.
.im macros.iph
.imd sendyes.h
.imd sndyseng.h
.imd sndyseng.rch
:title. &__APPNAME__. &__VERSION__.
.*** Note to translators:
.*** - This source file is both used for to compile the HLP and
.*** and the INF file.
.*** - the IPFC preprocessor IPFCPREP is used to resolve
.*** BookMaster macros and conditional compile variables.
.*** Refer to the DOC file of the IPFCPREP package.
.*** and to section "National Language Support"
.*** in the SendYes! INF file
.*** - please do NOT CHANGE any of the macros, just use them
.*** within your translated text. Please do not change
.*** the layout of lists, parameter lists, and notes.
.*** - some of the panels contain similar text: Use the same text
.*** where possible like it is done in this english version.
.*** An example is the text for the panels about the WPS program objects
.*** and the commandline parameters for SENDYES.EXE: as nearly each WPS object
.*** is for to execute SENDYES.EXE with one of the commandline parameters,
.*** at least the text for the note section is (and should stay !) nearly identical.
.***
.*** the following section is only compiled for INF
.config IPFTYPE on
.when 'INF' insert
.*********************************************************************************************
:HEADLINE level='1' id='IDPNL_OVERVIEW' options='clear'.
.*********************************************************************************************
:p.
:artwork name='BMP\SENDYES.BMP' align=center.
:font facename='Tms Rmn' size=36x36.:hp3.:color fc=red.
.ce &__APPNAME__. &__VERSION__.
:color fc=default.:font.:ehp3.
Are you tired of closing message boxes which you cannot surpress by default ?
Ever got fed up by those confirmation boxes for closing text sessions ?
:p.
Now use :hp2.&__APPNAME__.:ehp2. to process (nearly) all standard message boxes automatically.
:p.
Wes Santee, author of :hp2.SendYes!:ehp2. V1.00&colon.
.br
"I wrote SendYes! because I hated having to sit and click the 'Yes'
button during system shutdown to close all of my windowed text
sessions that were open. "
:p.
SendYes! is a small utility that looks for message boxes and waits,
until one comes up that matches with a message text defined within the :hp2.&__APPNAME__.:ehp2..
It then performs an action on a user selected pushbutton, which can be&colon.
pressing that button,
setting that button as the default button or deactivating that button.
:p.
The definition of a message text together with an associated action is stored as an
action profile within :hp2.&__APPNAME__.:ehp2..
You can define as many action profiles within :hp2.&__APPNAME__.:ehp2. as you like...
:p.
The first versions of :hp2.&__APPNAME__.:ehp2. were designed to close only
the confirmation message boxes that pop up whenever OS/2 is closing a DOS or
OS/2 Windowed or Fullscreen Text session. This was achieved by sending a
PM message to the yes button that it was pressed, so that way the utility got it's name.
.br
This feature as a subset of the current functionality is supported by
:TEXTLINK id='IDPNL_USAGE_PREDEF_ACTIONPRF'..
If you activate these action profiles :hp2.&__APPNAME__.:ehp2. will close the
confirmation message boxes as in earlier versions.
.br
.*********************************************************************************************
:HEADLINE level='1' id='IDPNL_REQUIREMENTS' options='clear'.
.*********************************************************************************************
:p.
:hp2.&__APPNAME__.:ehp2. has been tested on OS/2 V2.11 and OS/2 Warp 3.0
for detecting message boxes and performing actions on them.
It makes several assumptions as to the resource IDs of the message text and icon
contained in a standard message box.
If these resource IDs change in future versions of OS/2, :hp2.&__APPNAME__.:ehp2. will not
work under them and must be changed for that new version. At least until now
these IDs did not change at all ...
:p.
Furthermore :hp2.&__APPNAME__.:ehp2. reads the message texts for some
:TEXTLINK id='IDPNL_USAGE_PREDEF_ACTIONPRF'. out of PM resource DLLs.
If the resource IDs for these message texts change,
the predefined action profiles will not longer contain the correct message texts
and so they will not longer work, but you will still be able to define
action profiles which enable :hp2.&__APPNAME__.:ehp2. to process the message boxes
for which the predefined action profiles ares used.
:p.
For more information on predefined action profiles and how to test, if they work,
refer to section
:sl compact.
:li.:TEXTLINK id='IDPNL_USAGE_PREDEF_ACTIONPRF'.
:esl.
.br
.*********************************************************************************************
:HEADLINE level='1' id='IDPNL_PACKAGE' options='clear'.
.*********************************************************************************************
:p.
The :hp2.&__APPNAME__.:ehp2. package contains the following files&colon.
:xmp.
readme.cmd displays the "&IDH_IDPNL_OVERVIEW." of this INF file
install.cmd calls the installation program
sendyes.exe the GUI executable
sndyshk.bin the hook executable
sndysdll.dll the hook DLL
sndyseng.dll english resource library
sndyseng.hlp english help file
sndyseng.inf english online book
sndysger.dll german resource library
sndysger.hlp german help file
sndysger.inf german online book
nlssrc.zip zip file containing the sourcefiles for the
:TEXTLINK id='IDPNL_DETAILS_LANGUAGE'.
install\install.cmd install program for the :TEXTLINK id='IDPNL_USAGE_WPSOBJ'.
install\remove.cmd deinstall program for the :hp2.&IDH_IDPNL_USAGE_WPSOBJ.:ehp2.
install\sndyseng.msg english install messagefile
install\sndysger.msg german install messagefile
install\*.ico some icons used by the install and the deinstall program
:exmp.
:note.
:ul compact.
:li.you can delete the the language specific files for
languages which you don't use with :hp2.&__APPNAME__.:ehp2.
:eul.
.br
.*********************************************************************************************
:HEADLINE level='1' id='IDPNL_LEGAL' view='LEFT' options='clear'.
:AUTOLINK id='IDPNL_LEGAL_COPYRIGHT'.
.*********************************************************************************************
:p.
:TEXTLINK id='IDPNL_LEGAL_COPYRIGHT'.
.br
:TEXTLINK id='IDPNL_LEGAL_LICENSE_GENERAL'.
.br
:TEXTLINK id='IDPNL_LEGAL_LICENSE_SHAREWARE'.
.br
:TEXTLINK id='IDPNL_LEGAL_DISCLAIMER'.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_LEGAL_COPYRIGHT' view='RIGHT'.
.*============================================================================================
:p.
:hp2.&__APPNAME__. Copyright (C) &__AUTHOR__.:ehp2.
:p.
You are welcome to send your comments/suggestions via internet e-mail.
:p.
Send your email to :hp2.cla@oerag.de:ehp2.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_LEGAL_LICENSE_GENERAL' view='RIGHT'.
.*============================================================================================
:p.
:hp2.&__APPNAME__.:ehp2. is freeware for noncommercial use and
:TEXTLINKTEXT id='IDPNL_LEGAL_LICENSE_SHAREWARE' text='shareware'.
for use in a commercial environment.
:p.
You are allowed to freely use :hp2.&__APPNAME__.:ehp2. as long as
:ul compact.
:li.:hp2.&__APPNAME__.:ehp2. is used in a noncommercial environment
:eul.
:p.
You are allowed to freely distribute
:hp2.&__APPNAME__.:ehp2. as long as
:ul compact.
:li.:hp2.&__APPNAME__.:ehp2. is not sold as a part of another program package
:li.no fee is charged for the program other than for cost of media
:li.the complete package is distributed unmodified
:li.you send me some e-mail telling me how you liked it (or didn't like it)
and/or with your suggestions for enhancements.
:p.
I'd like especially to hear from you if you would like to help me
to enable :hp2.&__APPNAME__.:ehp2. to support your language if that is not yet done.
:p.
Refer to section
:sl compact.
:li.:TEXTLINK id='IDPNL_DETAILS_LANGUAGE'.
:esl.
:eul.
.*============================================================================================
:HEADLINE level='2' id='IDPNL_LEGAL_LICENSE_SHAREWARE' view='RIGHT'.
.*============================================================================================
:p.
You may use :hp2.&__APPNAME__.:ehp2. in a commercial environment only,
if you agree to the following terms in addition to the
:TEXTLINK id='IDPNL_LEGAL_LICENSE_GENERAL'. &colon.
:ul.
:li.If you continue to use :hp2.&__APPNAME__.:ehp2. after a trial
period of 30 days, you register it and pay a registration fee of
5$ for
:ul compact.
:li.every copy of the :hp2.&__APPNAME__.:ehp2. package, that you use on a
standalone computer at a time
:li.every user, that can access an installed :hp2.&__APPNAME__.:ehp2. package via a network
at a time. You are responsible to ensure that only that amount of users can access
an installed :hp2.&__APPNAME__.:ehp2. package at a time, that you registered for.
Or in other words, you have to register for every user, that can access an installed
:hp2.&__APPNAME__.:ehp2. package at a time.
:eul.
:li.If you don't register :hp2.&__APPNAME__.:ehp2. after the trial period of 30 days,
you delete all installed copies of the program
:eul.
:p.
The registration will allow you to use :hp2.&__APPNAME__.:ehp2. up to V2.99.
:p.
Contact the author for discounts and site licenses.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_LEGAL_DISCLAIMER' view='RIGHT'.
.*============================================================================================
:p.
:color fc=red.
Since this program is free,
it is supplied with no warranty, either expressed or implied.
:p.
I disclaim all warranties for any damages included but not limited to incidental or consequential
damage caused directly or indirectly by this software.
:p.
All software is supplied AS IS.
You may use the :hp2.&__APPNAME__.:ehp2. package only at your own risk.
:p.
:hp2.&__APPNAME__.:ehp2. must not be used in states that do not allow the above limitation of liability.
:color fc=default.
.br
.*********************************************************************************************
:HEADLINE level='1' id='IDPNL_INSTALL' view='LEFT' options='clear'.
:AUTOLINK id='IDPNL_INSTALL_COPY'.
.*********************************************************************************************
:p.
:TEXTLINK id='IDPNL_INSTALL_COPY'.
.br
:TEXTLINK id='IDPNL_INSTALL_INSTALL'.
.br
:TEXTLINK id='IDPNL_INSTALL_DEINSTALL'.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_INSTALL_COPY' view='RIGHT'.
.*============================================================================================
:p.
If you received the :TEXTLINKTEXT id='IDPNL_PACKAGE' text='&__APPNAME__. package'. as a ZIP file,
create a directory for the files of the :hp2.&__APPNAME__.:ehp2. package on your harddisk
and unzip all files from the ZIP file into it.
:p.
Make sure that the directory structure stored within the ZIP file is preserved.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_INSTALL_INSTALL' view='RIGHT'.
.*============================================================================================
:p.
To create a :hp2.&__APPNAME__.:ehp2. folder with precustomized program objects in it,
execute the following steps&colon.
:ol compact.
.*----------------
:li.open an :hp2.OS/2 Window:ehp2.
.*----------------
:li.change into the directory, where the files of the
:TEXTLINKTEXT id='IDPNL_PACKAGE' text='&__APPNAME__. package'. reside
.*----------------
:li.change into the subdirectory :hp2.INSTALL:ehp2.
.*----------------
:li.run the command
:sl compact.
:li.:hp2.install:ehp2.
:esl.
.*----------------
:eol.
:p.
Within the installation program you can select
the language to be used by the program.
:p.
The installation program creates the :hp2.&__APPNAME__.:ehp2. folder with several
:TEXTLINK id='IDPNL_USAGE_WPSOBJ'..
:note.
:ul compact.
.*----------------
:li.If you want to change the location of the files of the :hp2.&__APPNAME__.:ehp2. package,
move the :hp2.&__APPNAME__.:ehp2. directory to the new location and rerun the
:hp2.&IDH_IDPNL_INSTALL_INSTALL.:ehp2. to update the
:TEXTLINK id='IDPNL_USAGE_WPSOBJ'..
.*----------------
:eul.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_INSTALL_DEINSTALL' view='RIGHT'.
.*============================================================================================
:p.
To remove all :TEXTLINK id='IDPNL_USAGE_WPSOBJ'.,
:ul.
:li.execute the icon :TEXTLINK id='IDPNL_USAGE_WPSOBJ_WPSDEINSTALL'.
:li.or execute the following steps&colon.
:ol compact.
.*----------------
:li.open an :hp2.OS/2 Window:ehp2.
.*----------------
:li.change into the directory, where the files of the
:TEXTLINKTEXT id='IDPNL_PACKAGE' text='&__APPNAME__. package'. reside
.*----------------
:li.change into the subdirectory :hp2.INSTALL:ehp2.
.*----------------
:li.run the command
:sl compact.
:li.:hp2.remove:ehp2.
:esl.
.*----------------
:eol.
:p.
:eul.
:note.
:ul compact.
:li.The :hp2.&IDH_IDPNL_USAGE_WPSOBJ_WPSDEINSTALL.:ehp2. does not remove any files
from your harddisk.
To completely deinstall :hp2.&__APPNAME__.:ehp2. you must also remove the files of the
:hp2.&__APPNAME__. package:ehp2..
:eul.
.br
.***
.*** ending conditional compile section
.config IPFTYPE off
.***
.*** the following section is compiled for both INF and HLP
.*********************************************************************************************
:HEADLINE level='1' id='IDPNL_USAGE' view='LEFT' options='clear'.
:AUTOLINK id='IDPNL_USAGE_ACTIONPRF'.
.*********************************************************************************************
:p.
.***
.*** the following section is only compiled for HLP
.config IPFTYPE on
.when 'HLP' insert
Select between the following sections&colon.
:p.
.***
.*** ending conditional compile section
.config IPFTYPE off
:TEXTLINK id='IDPNL_USAGE_ACTIONPRF'.
.br
:TEXTLINK id='IDPNL_USAGE_PREDEF_ACTIONPRF'.
.br
:TEXTLINK id='IDPNL_USAGE_GUI'.
.br
:TEXTLINK id='IDPNL_USAGE_WPSOBJ'.
.br
:TEXTLINK id='IDPNL_USAGE_PARM'.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_USAGE_ACTIONPRF' view='RIGHT'.
.*============================================================================================
:p.
The :hp2.&__APPNAME__.:ehp2. graphical user interface allows the user to
create, copy, edit and delete action profiles. Action profiles consist of the following
data&colon.
:ul.
:li.
the message text of the message box which is to be intercepted
:li.
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.
:li.
the action to take. This can be&colon.
:ul compact.
:li.pressing the button
:li.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
.br
:li.disabling the button
:eul.
:note.
:ul compact.
:li.
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.
:li.
the message text of :TEXTLINK id='IDPNL_USAGE_PREDEF_ACTIONPRF'. cannot be edited.
However the pushhbutton to act on and the action to take can be changed.
:li.
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).
.br
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.
.br
In that case close the message box first and then the help window.
:eul.
:eul.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_USAGE_PREDEF_ACTIONPRF' view='RIGHT'.
.*============================================================================================
:p.
Predefined action profiles are different from user defined action profiles&colon.
:ul.
:li.:hp2.&__APPNAME__.:ehp2. creates and displays them automatically the first time it is started
:li.they cannot be deleted
:li.their message text is read out of PM resources and cannot be edited
:eul.
:p.
However the pushhbutton to act on and the action
to take can be changed for predefined action profiles.
:p.
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 :hp2.&__APPNAME__.:ehp2. 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.
:p.
The predefined action profiles are first of all for to support
the functionality of previous versions of :hp2.&__APPNAME__.:ehp2.
without enforcing the user to set up action profiles for that himself.
:p.
To enable the user to distinct between predefined and user defined action profiles,
every predefined action profile entry is
displayed with a preceeding label.
:p.
In the current version :hp2.&__APPNAME__.:ehp2. comes with the following predefined action profiles
for to process confirmation message boxes for&colon.
.*------------
:ul.
:li.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.
.br
This action profile is labeled :hp2.&IDT_IDSTR_PREDEFACTIONPRF_CONFIRMWIN.:ehp2.
:li.closing an OS/2 fullscreen text session.
.br
This action profile is labeled :hp2.&IDT_IDSTR_PREDEFACTIONPRF_CONFIRMFS.:ehp2.
:li.shutdown.
.br
This action profile is labeled :hp2.&IDT_IDSTR_PREDEFACTIONPRF_SHUTDOWN.:ehp2.
:eul.
.*------------
:p.
To find out wether the predefined action profiles of :hp2.&__APPNAME__.:ehp2. 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
:sl compact.
:li.:TEXTLINK head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_TEST_PAP'.
:esl.
:p.
If all text sessions close well without confirmation boxes, everything is fine.
.br
If not, please email and tell me so...
.br
Meanwhile you can define an action profile which will close these textsessions
without confirmation boxes on YOUR system.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_USAGE_GUI' view='RIGHTTOPHALF'.
:AUTOLINK id='IDPNL_USAGE_GUI_SESSIONPAGE'.
.*============================================================================================
:p.
The :hp2.&__APPNAME__.:ehp2. 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 :hp2.&__APPNAME__.:ehp2.
without any parameters or execute the icon :TEXTLINK id='IDPNL_USAGE_WPSOBJ_SETTINGS'..
:note.
Only one instance of the :hp2.&__APPNAME__.:ehp2. GUI can be active at a time.
:p.
The notebook contains two notebook pages and a common dialog is used for to create,
copy or edit action profiles&colon.
:ul compact.
:li.:TEXTLINK id='IDPNL_USAGE_GUI_SESSIONPAGE'.
:li.:TEXTLINK id='IDPNL_USAGE_GUI_ACTIONSPAGE'.
:li.:TEXTLINK id='IDPNL_USAGE_GUI_NEWDIALOG'.
:eul.
.br
.*--------------------------------------------------------------------------------------------
:HEADLINE_N level='3' id='IDPNL_USAGE_GUI_SESSIONPAGE' view='RIGHTBOTTOMHALF'.
.*--------------------------------------------------------------------------------------------
:p.
On this page you can
.*------------
:ul.
:li.start the :hp2.&__APPNAME__.:ehp2. hook executable and thus activate the
:hp2.&__APPNAME__.:ehp2. functionality.
:p.
Use the checkbox :hp2.&IDH_IDDLG_NBSESSION_CB_ACTIVE.:ehp2. to activate or deactivate
:hp2.&__APPNAME__.:ehp2.
:li.define wether the :hp2.&__APPNAME__.:ehp2. hook executable is loaded by a separate process
or by the PMSHELL process
:note.
In the current version of :hp2.&__APPNAME__.:ehp2. the hook executable is always loaded by a
separate process, so this setting cannot be changed
:li.define wether the :hp2.&__APPNAME__.:ehp2. hook executable is unloaded on deactivation or not
:note.
In the current version of :hp2.&__APPNAME__.:ehp2. the hook executable is always unloaded on
deactivation, so this setting cannot be changed
:eul.
.*------------
.br
.*--------------------------------------------------------------------------------------------
:HEADLINE_N level='3' id='IDPNL_USAGE_GUI_ACTIONSPAGE' view='RIGHTBOTTOMHALF'.
.*--------------------------------------------------------------------------------------------
:p.
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&colon.
.*------------
:ul.
:li.
the list labeled :hp2.&IDT_IDDLG_NBACTIONS_ST_DEFINED.:ehp2. contains defined
action profiles, which are not active.
:p.
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.
:li.
the list labeled :hp2.&IDT_IDDLG_NBACTIONS_ST_ACTIVATED.:ehp2. contains activated
action profiles. If the :hp2.&__APPNAME__.:ehp2. hook executable is activated on the
:hp2.&IDH_IDDLG_NBSESSION.:ehp2., the action profiles are executed when the apropriate
message boxes come up.
:p.
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 :hp2.&IDT_IDDLG_NBACTIONS_ST_DEFINED.:ehp2..
.br
Also the predefined action profiles for closing text sessions (and only those) can be tested&colon.
.br
:hp2.&__APPNAME__.:ehp2. 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.
:eul.
.*------------
:p.
Although you can manipulate action profiles either with the keyboard or with the mouse,
the usage of the mouse is far easier.
The new :TEXTLINK id='IDPNL_DETAILS_LISTBOX'., which incorporate the
functionality of the :TEXTLINK id='IDPNL_DETAILS_LISTBOX_DMLB'. control and
the :TEXTLINK id='IDPNL_DETAILS_LISTBOX_MCLB'. control,
allow to use the mouse as follows&colon.
.*------------
:ul.
:li. use the :TEXTLINK id='IDPNL_HIDDEN_RIGHT_MOUSE_BUTTON'. within the lists to bring up
context menus for to perform the actions on action profiles as described above.
:li. as an alternative for some actions within the context menus use drag&.drop&colon.
.*- - - - - -
:ul compact.
:li.between both lists for to activate or deactivate action profiles.
:li.within the list labeled :hp2.&IDT_IDDLG_NBACTIONS_ST_DEFINED.:ehp2.
for to copy an existing action profile.
:eul.
.*- - - - - -
:eul.
.*------------
:p.
For more information on how to manipulate action profiles
refer to section
:sl compact.
:li.:TEXTLINK id='IDPNL_HOW'.
:esl.
:p.
:hp2.&__APPNAME__.:ehp2. 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.
:p.
Refer to section
:sl compact.
:li.:TEXTLINK id='IDPNL_USAGE_PREDEF_ACTIONPRF'.
:li.:TEXTLINK head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_TEST_PAP'.
:esl.
.br
.*--------------------------------------------------------------------------------------------
:HEADLINE_N level='3' id='IDPNL_USAGE_GUI_NEWDIALOG' view='RIGHTBOTTOMHALF'.
.*--------------------------------------------------------------------------------------------
:p.
Within this dialog you can create a new or copy or edit existing
:TEXTLINK id='IDPNL_USAGE_ACTIONPRF'..
.br
.*============================================================================================
:HEADLINE_N level='2' id='IDPNL_USAGE_WPSOBJ' view='RIGHTTOPHALF'.
:AUTOLINK id='IDPNL_USAGE_WPSOBJ_INITIALIZE'.
.*============================================================================================
:p.
The :hp2.&IDH_IDPNL_USAGE_WPSOBJ_WPSINSTALL.:ehp2. creates the following objects&colon.
:ul.
.*- - - - - - -
:li.a :hp2.&__APPNAME__.:ehp2. folder on the desktop,
which contains the following program reference objects&colon.
:ul compact.
:li.:TEXTLINK id='IDPNL_USAGE_WPSOBJ_INITIALIZE'.
:li.:TEXTLINK id='IDPNL_USAGE_WPSOBJ_SETTINGS'.
:li.:TEXTLINK id='IDPNL_USAGE_WPSOBJ_HELP'.
:li.:TEXTLINK id='IDPNL_USAGE_WPSOBJ_WPSINSTALL'.
:li.:TEXTLINK id='IDPNL_USAGE_WPSOBJ_WPSDEINSTALL'.
:eul.
.*- - - - - - -
:li.a shadow of :TEXTLINK id='IDPNL_USAGE_WPSOBJ_INITIALIZE'., which is placed into the
folder :hp2.Startup:ehp2., so that :hp2.&__APPNAME__.:ehp2. is initialized on every startup
of OS/2.
For more information on intitializing :hp2.&__APPNAME__.:ehp2. on system startup refer to
:sl compact.
:li.:TEXTLINK head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_INITIALIZE'.
:esl.
:li.a shadow of the folder :hp2.Startup:ehp2., which is placed into the :hp2.&__APPNAME__.:ehp2.
folder, so that you can easily access this folder in order to delete the shadow of
:TEXTLINK id='IDPNL_USAGE_WPSOBJ_INITIALIZE'. or place it into the startup folder again.
:li.a shadow of :TEXTLINK id='IDPNL_USAGE_WPSOBJ_SETTINGS'., which is placed into
the folder :hp2.System Setup:ehp2..
:eul.
.br
.*--------------------------------------------------------------------------------------------
:HEADLINE_N level='3' id='IDPNL_USAGE_WPSOBJ_INITIALIZE' view='RIGHTBOTTOMHALF'.
.*--------------------------------------------------------------------------------------------
:p.
This icon loads the :hp2.&__APPNAME__.:ehp2. hook executable,
if the current settings state that :hp2.&__APPNAME__.:ehp2. is active.
A shadow of this icon is placed into the :hp2.Startup:ehp2. folder by the
installation program so that :hp2.&__APPNAME__.:ehp2. is initialized on every system startup.
.br
For more information on intitializing :hp2.&__APPNAME__.:ehp2. refer to
:sl compact.
:li.:TEXTLINK head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_INITIALIZE'.
:esl.
:note.
:ul compact.
:li.If the environment variable :hp2.RESTARTOBJECTS:ehp2. is set to the value of
:hp2.NO:ehp2. within CONFIG.SYS, objects residing in the :hp2.Startup:ehp2.
folder are not processed automatically on System Startup. Then :hp2.&__APPNAME__.:ehp2.
must be initialised via a call in STARTUP.CMD or manually initialised.
.br
For more information on intitializing :hp2.&__APPNAME__.:ehp2. on system startup refer to
:sl compact.
:li.:TEXTLINK head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_INITIALIZE'.
:esl.
:li.You can load the :hp2.&__APPNAME__.:ehp2. hook executable also via the
:TEXTLINK id='IDPNL_USAGE_GUI'. by performing the following steps&colon.
.*--------
:ol compact.
:li.open the :hp2.&IDH_IDPNL_USAGE_GUI.:ehp2.
:li.select the :TEXTLINK id='IDPNL_USAGE_GUI_SESSIONPAGE'.
:li.check the checkbox labeled :hp2.&IDH_IDDLG_NBSESSION_CB_ACTIVE.:ehp2.
:li.the status field above the pushbuttons displays the new status of :hp2.&__APPNAME__.:ehp2.,
if :hp2.&__APPNAME__.:ehp2. was able to load the hook executable.
:eol.
.*--------
:li.No notification message box is displayed. Only in case of errors an error message box
is displayed.
:li.This icon is equivalent to executing
.*--------
:sl compact.
:li.[start] :hp2.&__PROGRAM__.:ehp2. :TEXTLINK id='IDPNL_USAGE_PARM_INITIALIZE'.
:esl.
.*--------
.br
on the commandline in the :hp2.&__APPNAME__.:ehp2. directory.
:eul.
.br
.*--------------------------------------------------------------------------------------------
:HEADLINE_N level='3' id='IDPNL_USAGE_WPSOBJ_SETTINGS' view='RIGHTBOTTOMHALF'.
.*--------------------------------------------------------------------------------------------
:p.
This icon starts the :TEXTLINK id='IDPNL_USAGE_GUI'., where you can
modify the current settings of the program.
:note.
:ul compact.
:li.This icon is equivalent to executing
.*--------
:sl compact.
:li.[start] :hp2.&__PROGRAM__.:ehp2.
:esl.
.*--------
.br
on the commandline in the :hp2.&__APPNAME__.:ehp2. directory.
:eul.
.br
.*--------------------------------------------------------------------------------------------
:HEADLINE_N level='3' id='IDPNL_USAGE_WPSOBJ_HELP' view='RIGHTBOTTOMHALF'.
.*--------------------------------------------------------------------------------------------
:p.
This icon brings up this INF file.
:note.
:ul compact.
:li.This icon is equivalent to executing
.*--------
:sl compact.
:li.:hp2.README:ehp2.
:esl.
.*--------
.br
on the commandline in the :hp2.&__APPNAME__.:ehp2. directory.
This will display the INF file for the currently selected language.
.***
.*** the following section is only compiled for INF
.config IPFTYPE on
.when 'INF' insert
:li.You can also display a language specific INF file directly by executing
.*--------
:sl compact.
:li.:hp2.README ???:ehp2. or
:li.:hp2.[start] view sndys???:ehp2.
:esl.
.*--------
.br
on the commandline in the :hp2.&__APPNAME__.:ehp2. directory,
where ??? is an english three letter abbreviation of the desired language.
For more information about available INF files refer to section
:sl compact.
:li.:TEXTLINK id='IDPNL_PACKAGE'.
:esl.
.***
.*** ending conditional compile section
.config IPFTYPE off
:eul.
.br
.*--------------------------------------------------------------------------------------------
:HEADLINE_N level='3' id='IDPNL_USAGE_WPSOBJ_WPSINSTALL' view='RIGHTBOTTOMHALF'.
.*--------------------------------------------------------------------------------------------
:p.
This icon executes the installation program for the
:TEXTLINK id='IDPNL_USAGE_WPSOBJ'..
:p.
Within this program you can select the language used by :hp2.&__APPNAME__.:ehp2.
and recreate the :hp2.&IDH_IDPNL_USAGE_WPSOBJ.:ehp2., so that newly selected
language is used for the object titles.
.br
.*--------------------------------------------------------------------------------------------
:HEADLINE_N level='3' id='IDPNL_USAGE_WPSOBJ_WPSDEINSTALL' view='RIGHTBOTTOMHALF'.
.*--------------------------------------------------------------------------------------------
:p.
This icon executes the deinstallation program for the
:TEXTLINK id='IDPNL_USAGE_WPSOBJ'..
:p.
With this program you can remove the :hp2.&IDH_IDPNL_USAGE_WPSOBJ.:ehp2..
:p.
:note.
:ul compact.
:li.The :hp2.&IDH_IDPNL_USAGE_WPSOBJ_WPSDEINSTALL.:ehp2. does not remove any files
from your harddisk.
To completely deinstall :hp2.&__APPNAME__.:ehp2. you must also remove the files of the
:hp2.&__APPNAME__. package:ehp2..
:eul.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_USAGE_PARM' view='RIGHTTOPHALF'.
:AUTOLINK id='IDPNL_USAGE_PARM_INITIALIZE'.
.*============================================================================================
:p.
The following parameters can be used to interact with
:hp2.&__APPNAME__.:ehp2. from the commandline&colon.
:parml compact tsize=25 break=none.
:pt.:TEXTLINK id='IDPNL_USAGE_PARM_INITIALIZE'.
:pd.
:pt.:TEXTLINK id='IDPNL_USAGE_PARM_LOAD'.
:pd.:TEXTLINK id='IDPNL_USAGE_PARM_STATUS'.
:pt.:TEXTLINK id='IDPNL_USAGE_PARM_UNLOAD'.
:pd.:TEXTLINK id='IDPNL_USAGE_PARM_BATCH'.
:pt.:TEXTLINK id='IDPNL_USAGE_PARM_ACTIVATE'.
:pd.:TEXTLINK id='IDPNL_USAGE_PARM_QUIET'.
:pt.:TEXTLINK id='IDPNL_USAGE_PARM_DEACTIVATE'.
:pd.:TEXTLINK id='IDPNL_USAGE_PARM_HELP'.
:eparml.
.br
:hp2.General notes on switch parameters&colon.:ehp2.
:ul compact.
:li.the parameter names are used case insensitive
:li.Instead of slashes you can also use the minus sign - that means that for example
specifying :hp2./load:ehp2. and :hp2.-load:ehp2. is equivalent
:li.it is sufficient to specify only the first character of the parameter name - that means
that :hp2./b:ehp2. and :hp2./batch:ehp2. (or :hp2.-b:ehp2. and :hp2.-batch:ehp2.) are also equivalent.
:eul.
.br
.*--------------------------------------------------------------------------------------------
:HEADLINE level='3' id='IDPNL_USAGE_PARM_INITIALIZE' view='RIGHTBOTTOMHALF'.
.*--------------------------------------------------------------------------------------------
:p.
This parameter is for to initialize :hp2.&__APPNAME__.:ehp2. on system startup.
:p.
If the current :hp2.&__APPNAME__.:ehp2. settings state that the hook executable should be active,
:hp2.&__APPNAME__.:ehp2. acts as if the parameter :TEXTLINK id='IDPNL_USAGE_PARM_LOAD'. was
specified.
:note.
:ul compact.
:li.No notification message box is displayed. Only in case of errors an error message box
is displayed.
:eul.
.br
.*--------------------------------------------------------------------------------------------
:HEADLINE level='3' id='IDPNL_USAGE_PARM_LOAD' view='RIGHTBOTTOMHALF'.
.*--------------------------------------------------------------------------------------------
:p.
This parameter loads the :hp2.&__APPNAME__.:ehp2. hook executable, if it is not already loaded.
If the hook executable can be loaded successfully,
the :hp2.&__APPNAME__.:ehp2. functionality is available and message boxes,
which apply to activated action profiles, are processed automatically.
:note.
:ul compact.
:li.If the hook executable can be loaded successfully, a notification message box is displayed.
:li.If the hook executable is already loaded or cannot be loaded, an error message box is displayed.
:li.Both the notification and the error message box can be surpressed by also specifiying
the parameter :TEXTLINK id='IDPNL_USAGE_PARM_BATCH'..
Instead a notification or an error beep is generated.
:p.
In addition the notification and error beeps can be supressed with the parameter
:TEXTLINK id='IDPNL_USAGE_PARM_QUIET'..
:eul.
.br
.*--------------------------------------------------------------------------------------------
:HEADLINE level='3' id='IDPNL_USAGE_PARM_UNLOAD' view='RIGHTBOTTOMHALF'.
.*--------------------------------------------------------------------------------------------
:p.
This parameter unloads the :hp2.&__APPNAME__.:ehp2. hook executable, if it is active.
When the hook executable is unloaded, the :hp2.&__APPNAME__.:ehp2. functionality is not longer
available and message boxes are no more processed automatically.
:note.
:ul compact.
:li.If the hook executable can be unloaded successfully, a notification message box is displayed.
:li.If the hook executable is not loaded or cannot be unloaded, an error message box is displayed.
:li.Both the notification and the error message box can be surpressed by also specifiying
the parameter :TEXTLINK id='IDPNL_USAGE_PARM_BATCH'..
Instead a notification or an error beep is generated.
:p.
In addition the notification and error beeps can be supressed with the parameter
:TEXTLINK id='IDPNL_USAGE_PARM_QUIET'..
:eul.
.br
.*--------------------------------------------------------------------------------------------
:HEADLINE level='3' id='IDPNL_USAGE_PARM_ACTIVATE' view='RIGHTBOTTOMHALF'.
.*--------------------------------------------------------------------------------------------
:p.
This parameter works exactly like :TEXTLINK id='IDPNL_USAGE_PARM_LOAD'..
:p.
It is implemented just as a counterpart to :TEXTLINK id='IDPNL_USAGE_PARM_DEACTIVATE'..
.br
.*--------------------------------------------------------------------------------------------
:HEADLINE level='3' id='IDPNL_USAGE_PARM_DEACTIVATE' view='RIGHTBOTTOMHALF'.
.*--------------------------------------------------------------------------------------------
:p.
In the current version of :hp2.&__APPNAME__.:ehp2. this parameter works exactly like
:TEXTLINK id='IDPNL_USAGE_PARM_UNLOAD'..
:p.
This will change when :hp2.&__APPNAME__.:ehp2. supports deactivating the hook
executable without unloading it. Then :hp2.&IDH_IDPNL_USAGE_PARM_DEACTIVATE.:ehp2.
is used for this deactivation.
.br
.*--------------------------------------------------------------------------------------------
:HEADLINE level='3' id='IDPNL_USAGE_PARM_STATUS' view='RIGHTBOTTOMHALF'.
.*--------------------------------------------------------------------------------------------
:p.
This parameter queries wether the :hp2.&__APPNAME__.:ehp2. hook executable is active or not.
:p.
A status message box is displayed and the following ERRORLEVEL is returned&colon.
:parml compact tsize=4 break=none.
:pt.:hp2.1:ehp2.
:pd.:hp2.&__APPNAME__.:ehp2. is active
:pt.:hp2.0:ehp2.
:pd.:hp2.&__APPNAME__.:ehp2. is not active
:eparml.
:note.
:ul compact.
:li.When you specify :hp2./&PARM_STATUS.:ehp2., all other parameters but
:hp2./&PARM_HELP1.:ehp2. are ignored.
:li.The status message box can be surpressed by also specifiying
the parameter :TEXTLINK id='IDPNL_USAGE_PARM_BATCH'..
Unlike specifying :hp2.&IDH_IDPNL_USAGE_PARM_BATCH.:ehp2. together with other parameters
no notification or error beep is generated here.
:eul.
.br
.*--------------------------------------------------------------------------------------------
:HEADLINE level='3' id='IDPNL_USAGE_PARM_BATCH' view='RIGHTBOTTOMHALF'.
.*--------------------------------------------------------------------------------------------
:p.
This parameter surpresses message boxes when processing the parameters
:TEXTLINK id='IDPNL_USAGE_PARM_LOAD'., :TEXTLINK id='IDPNL_USAGE_PARM_UNLOAD'.,
:TEXTLINK id='IDPNL_USAGE_PARM_ACTIVATE'., :TEXTLINK id='IDPNL_USAGE_PARM_DEACTIVATE'. or
:TEXTLINK id='IDPNL_USAGE_PARM_STATUS'..
:p.
Instead of displaying a message box, a notification or an error beep is generated.
This beep can be surpressed by also specifiying :TEXTLINK id='IDPNL_USAGE_PARM_QUIET'..
:p.
When using :hp2./&PARM_BATCH.:ehp2. together with :hp2./&PARM_STATUS.:ehp2.,
no notification or error beep is generated by default.
.br
.*--------------------------------------------------------------------------------------------
:HEADLINE level='3' id='IDPNL_USAGE_PARM_QUIET' view='RIGHTBOTTOMHALF'.
.*--------------------------------------------------------------------------------------------
:p.
This parameter surpresses notification and error beeps when using the parameter
:TEXTLINK id='IDPNL_USAGE_PARM_BATCH'..
.br
.*--------------------------------------------------------------------------------------------
:HEADLINE level='3' id='IDPNL_USAGE_PARM_HELP' view='RIGHTBOTTOMHALF'.
.*--------------------------------------------------------------------------------------------
:p.
This parameter gives a brief help text about the parameters.
:p.
When you specify :hp2./&PARM_HELP1.:ehp2., all other parameters are ignored.
:p.
Instead of :hp2./&PARM_HELP1.:ehp2. also specifying :hp2./&PARM_HELP2.:ehp2. is valid.
.br
.*********************************************************************************************
:HEADLINE level='1' id='IDPNL_HOW' view='LEFT'.
:AUTOLINK id='IDPNL_HOW_LOAD'.
.*********************************************************************************************
:p.
.***
.*** the following section is only compiled for HLP
.config IPFTYPE on
.when 'HLP' insert
Select between the following sections&colon.
:p.
&IDH_IDPNL_HOW__BASETEXT....
:p.
.***
.*** ending conditional compile section
.config IPFTYPE off
:TEXTLINK head='&IDH_IDPNL_HOW__BASEDOT.' id='IDPNL_HOW_LOAD'.
.br
:TEXTLINK head='&IDH_IDPNL_HOW__BASEDOT.' id='IDPNL_HOW_UNLOAD'.
.br
:TEXTLINK head='&IDH_IDPNL_HOW__BASEDOT.' id='IDPNL_HOW_ACTIVATE'.
.br
:TEXTLINK head='&IDH_IDPNL_HOW__BASEDOT.' id='IDPNL_HOW_DEACTIVATE'.
.br
:TEXTLINK head='&IDH_IDPNL_HOW__BASEDOT.' id='IDPNL_HOW_STATUS'.
.br
:TEXTLINK head='&IDH_IDPNL_HOW__BASEDOT.' id='IDPNL_HOW_BATCH'.
.br
:TEXTLINK head='&IDH_IDPNL_HOW__BASEDOT.' id='IDPNL_HOW_INITIALIZE'.
.br
.br
:TEXTLINK head='&IDH_IDPNL_HOW__BASEDOT.' id='IDPNL_HOW_STARTGUI'.
.br
:TEXTLINK head='&IDH_IDPNL_HOW__BASEDOT.' id='IDPNL_HOW_SELECT'.
.br
:TEXTLINK head='&IDH_IDPNL_HOW__BASEDOT.' id='IDPNL_HOW_CREATE_AP'.
.br
:TEXTLINK head='&IDH_IDPNL_HOW__BASEDOT.' id='IDPNL_HOW_COPY_AP'.
.br
:TEXTLINK head='&IDH_IDPNL_HOW__BASEDOT.' id='IDPNL_HOW_ACTIVATE_AP'.
.br
:TEXTLINK head='&IDH_IDPNL_HOW__BASEDOT.' id='IDPNL_HOW_DEACTIVATE_AP'.
.br
:TEXTLINK head='&IDH_IDPNL_HOW__BASEDOT.' id='IDPNL_HOW_EDIT_AP'.
.br
:TEXTLINK head='&IDH_IDPNL_HOW__BASEDOT.' id='IDPNL_HOW_TEST_PAP'.
.br
.br
:TEXTLINK head='&IDH_IDPNL_HOW__BASEDOT.' id='IDPNL_HOW_CHANGELANG'.
.br
.***
.*** the following section is only compiled for INF
.config IPFTYPE on
.when 'INF' insert
:TEXTLINK head='&IDH_IDPNL_HOW__BASEDOT.' id='IDPNL_HOW_DEINSTALL'.
.br
.***
.*** ending conditional compile section
.config IPFTYPE off
.*============================================================================================
:HEADLINE level='2' head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_LOAD' view='RIGHT'.
.*============================================================================================
:p.
To load the :hp2.&__APPNAME__.:ehp2. hook executable
:ul.
:li. perform the following steps within the :TEXTLINK id='IDPNL_USAGE_GUI'.&colon.
.*--------
:ol compact.
:li.open the :hp2.&IDH_IDPNL_USAGE_GUI.:ehp2.
:li.select the :TEXTLINK id='IDPNL_USAGE_GUI_SESSIONPAGE'.
:li.check the checkbox labeled :hp2.&IDH_IDDLG_NBSESSION_CB_ACTIVE.:ehp2.
:li.the status field above the pushbuttons displays the new status of :hp2.&__APPNAME__.:ehp2.,
if :hp2.&__APPNAME__.:ehp2. was able to load the hook executable.
:eol.
.*--------
:li.or execute the following command on the commandline
in the :hp2.&__APPNAME__.:ehp2. directory&colon.
:sl compact.
:li.[start] :hp2.&__PROGRAM__.:ehp2.
:TEXTLINK id='IDPNL_USAGE_PARM_LOAD'.
[:TEXTLINK id='IDPNL_USAGE_PARM_BATCH'.]
[:TEXTLINK id='IDPNL_USAGE_PARM_QUIET'.]
:esl.
:eul.
.br
.*============================================================================================
:HEADLINE level='2' head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_UNLOAD' view='RIGHT'.
.*============================================================================================
:p.
To unload the :hp2.&__APPNAME__.:ehp2. hook executable
:ul.
:li. perform the following steps within the :TEXTLINK id='IDPNL_USAGE_GUI'.&colon.
.*--------
:ol compact.
:li.open the :hp2.&IDH_IDPNL_USAGE_GUI.:ehp2.
:li.select the :TEXTLINK id='IDPNL_USAGE_GUI_SESSIONPAGE'.
:li.uncheck the checkbox labeled :hp2.&IDH_IDDLG_NBSESSION_CB_ACTIVE.:ehp2.
:li.the status field above the pushbuttons displays the new status of :hp2.&__APPNAME__.:ehp2.,
if :hp2.&__APPNAME__.:ehp2. was able to unload the hook executable.
:eol.
.*--------
:li.or execute the following command on the commandline
in the :hp2.&__APPNAME__.:ehp2. directory&colon.
:sl compact.
:li.[start] :hp2.&__PROGRAM__.:ehp2.
:TEXTLINK id='IDPNL_USAGE_PARM_UNLOAD'.
[:TEXTLINK id='IDPNL_USAGE_PARM_BATCH'.]
[:TEXTLINK id='IDPNL_USAGE_PARM_QUIET'.]
:esl.
:eul.
.br
.*============================================================================================
:HEADLINE level='2' head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_ACTIVATE' view='RIGHT'.
.*============================================================================================
:p.
In the current version of :hp2.&__APPNAME__.:ehp2. activating the
:hp2.&__APPNAME__.:ehp2. hook executable is in fact the same as loading it.
.br
To activate the :hp2.&__APPNAME__.:ehp2. hook executable
:ul.
:li. perform the following steps within the :TEXTLINK id='IDPNL_USAGE_GUI'.&colon.
.*--------
:ol compact.
:li.open the :hp2.&IDH_IDPNL_USAGE_GUI.:ehp2.
:li.select the :TEXTLINK id='IDPNL_USAGE_GUI_SESSIONPAGE'.
:li.check the checkbox labeled :hp2.&IDH_IDDLG_NBSESSION_CB_ACTIVE.:ehp2.
:li.the status field above the pushbuttons displays the new status of :hp2.&__APPNAME__.:ehp2.,
if :hp2.&__APPNAME__.:ehp2. was able to load the hook executable.
:eol.
.*--------
:li.or execute the following command on the commandline
in the :hp2.&__APPNAME__.:ehp2. directory&colon.
:sl compact.
:li.[start] :hp2.&__PROGRAM__.:ehp2.
:TEXTLINK id='IDPNL_USAGE_PARM_ACTIVATE'.
[:TEXTLINK id='IDPNL_USAGE_PARM_BATCH'.]
[:TEXTLINK id='IDPNL_USAGE_PARM_QUIET'.]
:esl.
:eul.
.br
.*============================================================================================
:HEADLINE level='2' head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_DEACTIVATE' view='RIGHT'.
.*============================================================================================
:p.
In the current version of :hp2.&__APPNAME__.:ehp2. deactivating the
:hp2.&__APPNAME__.:ehp2. hook executable is in fact the same as unloading it.
.br
To deactivate the :hp2.&__APPNAME__.:ehp2. hook executable
:ul.
.*--------
:ol compact.
:li.open the :hp2.&IDH_IDPNL_USAGE_GUI.:ehp2.
:li.select the :TEXTLINK id='IDPNL_USAGE_GUI_SESSIONPAGE'.
:li.uncheck the checkbox labeled :hp2.&IDH_IDDLG_NBSESSION_CB_ACTIVE.:ehp2.
:li.the status field above the pushbuttons displays the new status of :hp2.&__APPNAME__.:ehp2.,
if :hp2.&__APPNAME__.:ehp2. was able to unload the hook executable.
:eol.
.*--------
:li.or execute the following command on the commandline
in the :hp2.&__APPNAME__.:ehp2. directory&colon.
:sl compact.
:li.[start] :hp2.&__PROGRAM__.:ehp2.
:TEXTLINK id='IDPNL_USAGE_PARM_DEACTIVATE'.
[:TEXTLINK id='IDPNL_USAGE_PARM_BATCH'.]
[:TEXTLINK id='IDPNL_USAGE_PARM_QUIET'.]
:esl.
:eul.
.br
.*============================================================================================
:HEADLINE level='2' head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_STATUS' view='RIGHT'.
.*============================================================================================
:p.
To query the status of the :hp2.&__APPNAME__.:ehp2. hook executable
:ul.
:li. perform the following steps within the :TEXTLINK id='IDPNL_USAGE_GUI'.&colon.
.*--------
:ol compact.
:li.open the :hp2.&IDH_IDPNL_USAGE_GUI.:ehp2.
:li.select the :TEXTLINK id='IDPNL_USAGE_GUI_SESSIONPAGE'.
:li.the status field above the pushbuttons displays the status of :hp2.&__APPNAME__.:ehp2.
:eol.
.*--------
:li.or execute the following command on the commandline
in the :hp2.&__APPNAME__.:ehp2. directory&colon.
:sl compact.
:li.[start] :hp2.&__PROGRAM__.:ehp2.
:TEXTLINK id='IDPNL_USAGE_PARM_STATUS'.
[:TEXTLINK id='IDPNL_USAGE_PARM_BATCH'.]
:esl.
:eul.
.br
.*============================================================================================
:HEADLINE level='2' head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_BATCH' view='RIGHT'.
.*============================================================================================
:p.
To use &__PROGRAM__..EXE within batch files, use the parameter
:TEXTLINK id='IDPNL_USAGE_PARM_BATCH'.. This way all notification and error message
boxes are surpressed. You can always check the result via the OS/2 :hp2.ERRORLEVEL:ehp2.
batch variable within normal batch files or the variable :hp2.rc:ehp2. within REXX batch files&colon.
Except when querying the status of the :hp2.&__APPNAME__.:ehp2. hook executable, the
:hp2.ERRORLEVEL:ehp2. is always zero when &__PROGRAM__..EXE was executed successfully.
Otherwise an OS/2 errorcode is returned.
:note.
:ul compact.
:li.
if you use :hp2.&IDH_IDPNL_USAGE_PARM_BATCH.:ehp2. 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 :TEXTLINK id='IDPNL_USAGE_PARM_QUIET'..
:eul.
.br
.*============================================================================================
:HEADLINE level='2' head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_INITIALIZE' view='RIGHT'.
.*============================================================================================
:p.
The :hp2.&__APPNAME__.:ehp2. :hp2.&IDH_IDPNL_INSTALL_INSTALL.:ehp2. puts a a shadow of
:TEXTLINK id='IDPNL_USAGE_WPSOBJ_INITIALIZE'. into the folder :hp2.Startup:ehp2.,
so that :hp2.&__APPNAME__.:ehp2. is initialized on every startup of OS/2.
:p.
This only works if the environment variable :hp2.RESTARTOBJECTS:ehp2. in CONFIG.SYS is set to
a value that lets the WPS automatically process all objects residing
in the :hp2.Startup:ehp2. folder.
:p.
The environment variable may be set to the following values within CONFIG.SYS&colon.
:parml tsize=10.
:pt.:hp2.<no value>:ehp2.
:pd.All programs that were active on shutdown are restartet automatically on system startup.
Also all objects that reside in the :hp2.Startup:ehp2. folder are opened on startup.
:p.
:hp2.&__APPNAME__.:ehp2. can be initialized via the shadow of
:TEXTLINK id='IDPNL_USAGE_WPSOBJ_INITIALIZE'. in the :hp2.Startup:ehp2. folder.
:pt.:hp2.STARTUPFOLDERSONLY:ehp2.
:pd.Programs, that were active on shutdown, are not restartet automatically on startup. All
objects that reside in the :hp2.Startup:ehp2. folder are opened on startup.
(BWT, yes, there can be more that one startup folder, although OS/2 creates only one).
:p.
:hp2.&__APPNAME__.:ehp2. can be initialized via the shadow of
:hp2.&IDH_IDPNL_USAGE_WPSOBJ_INITIALIZE.:ehp2. in the :hp2.Startup:ehp2. folder.
:pt.:hp2.NO:ehp2.
:pd.No programs are started automatically by the WPS.
:p.
:hp2.&__APPNAME__.:ehp2. CANNOT be initialized via the shadow of
:hp2.&IDH_IDPNL_USAGE_WPSOBJ_INITIALIZE.:ehp2. in the :hp2.Startup:ehp2. folder.
:p.
Instead put the command the following command into your STARTUP.CMD
:sl compact.
:li.[start] d&colon.\path\:hp2.&__PROGRAM__.:ehp2. :TEXTLINK id='IDPNL_USAGE_PARM_INITIALIZE'.
:esl.
:p.
where d&colon.\path is the full qualified pathname of the :hp2.&__APPNAME__.:ehp2. directory,
or execute :hp2.&IDH_IDPNL_USAGE_WPSOBJ_INITIALIZE.:ehp2. manually.
:eparml.
.br
.*============================================================================================
:HEADLINE level='2' head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_STARTGUI' view='RIGHT'.
.*============================================================================================
:p.
To start the :hp2.&__APPNAME__.:ehp2. GUI, execute the icon
:sl compact.
:li.:TEXTLINK id='IDPNL_USAGE_WPSOBJ_SETTINGS'.
:esl.
:p.
or execute the following command on the commandline
in the :hp2.&__APPNAME__.:ehp2. directory&colon.
:sl compact.
:li.[start] :hp2.&__PROGRAM__.:ehp2.
:esl.
.br
.*============================================================================================
:HEADLINE level='2' head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_SELECT' view='RIGHT'.
.*============================================================================================
:p.
To select an action profile, perform the following steps&colon.
:ul.
.*-------------
:li.
open the :TEXTLINK id='IDPNL_USAGE_GUI'..
.br
Refer to
:sl compact.
:li.:TEXTLINK head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_STARTGUI'.
:esl.
.*-------------
:li.
Select the :TEXTLINK id='IDPNL_USAGE_GUI_ACTIONSPAGE'..
.*-------------
:li.
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.
.br
You can bring up the context menu for that profile by pressing Enter.
.br
This applies also if a list is empty. After setting the focus onto a list, pressing
Enter also brings up the popup menu.
.*-------------
:li.
To select an action profile with the mouse, click on it.
.br
You can bring up the context menu for that profile by
clicking with the :TEXTLINK id='IDPNL_HIDDEN_RIGHT_MOUSE_BUTTON'. on it.
.br
This applies also if a list is empty. Clicking with the
:hp2.&IDH_IDPNL_HIDDEN_RIGHT_MOUSE_BUTTON.:ehp2.
onto the list also brings up the popup menu.
:eul.
.br
.*============================================================================================
:HEADLINE level='2' head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_CREATE_AP' view='RIGHT'.
.*============================================================================================
:p.
To create an action profile, perform the following steps
on the :TEXTLINK id='IDPNL_USAGE_GUI_ACTIONSPAGE'.&colon.
:ul.
.*-------------
:li.
Bring up the context menu of the list
:hp2.&IDT_IDDLG_NBACTIONS_ST_DEFINED.:ehp2..
.br
Refer to
:sl compact.
:li.:TEXTLINK head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_SELECT'.
:esl.
.*-------------
:li.
Select the menu item :hp2.&IDH_IDT_IDMEN_ACTION_DEFINED_NEW.:ehp2.
.*-------------
:li.
:hp2.&__APPNAME__.:ehp2. brings up a dialog where you can fill in
the settings for the new profile.
.br
Refer to
:sl compact.
:li.:TEXTLINK id='IDPNL_USAGE_ACTIONPRF'.
:li.:TEXTLINK id='IDPNL_USAGE_GUI_NEWDIALOG'.
:esl.
:eul.
.br
.*============================================================================================
:HEADLINE level='2' head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_COPY_AP' view='RIGHT'.
.*============================================================================================
:p.
To copy an existing action profile, perform the following steps
on the :TEXTLINK id='IDPNL_USAGE_GUI_ACTIONSPAGE'.&colon.
:ul.
.*-------------
:li.
Select an action profile within the list labeled
:hp2.&IDT_IDDLG_NBACTIONS_ST_DEFINED.:ehp2..
To copy an action profile wich is activated and thus located in the list labeled
:hp2.&IDT_IDDLG_NBACTIONS_ST_ACTIVATED.:ehp2., deactivate it temporarily so that it is
available for a copy operation.
.br
Refer to
:sl compact.
:li.:TEXTLINK head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_SELECT'.
:li.:TEXTLINK head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_DEACTIVATE_AP'.
:esl.
.*-------------
:li.
Select the menu item :hp2.&IDH_IDT_IDMEN_ACTION_DEFINED_COPY.:ehp2.
.*-------------
:li.
:hp2.&__APPNAME__.:ehp2. 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.
.br
Refer to
:sl compact.
:li.:TEXTLINK id='IDPNL_USAGE_ACTIONPRF'.
:li.:TEXTLINK id='IDPNL_USAGE_GUI_NEWDIALOG'.
:esl.
:eul.
.br
.*============================================================================================
:HEADLINE level='2' head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_ACTIVATE_AP' view='RIGHT'.
.*============================================================================================
:p.
To activate an action profile, perform the following steps on the
:TEXTLINK id='IDPNL_USAGE_GUI_ACTIONSPAGE'.&colon.
:ul.
.*-------------
:li.
If you want to use the keyboard&colon.
:ul compact.
:li.Select the action profile you want to activate in the list labeled
:hp2.&IDT_IDDLG_NBACTIONS_ST_DEFINED.:ehp2. and bring up the context menu.
.br
Refer to
:sl compact.
:li.:TEXTLINK head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_SELECT'.
:esl.
:li.Select the menu item :hp2.&IDH_IDT_IDMEN_ACTION_DEFINED_ACTIVATE.:ehp2.
:eul.
:p.
If you want to use the mouse&colon.
:ul compact.
:li.Drag the action profile you want to activate from the list labeled
:hp2.&IDT_IDDLG_NBACTIONS_ST_DEFINED.:ehp2. to the list labeled
:hp2.&IDT_IDDLG_NBACTIONS_ST_ACTIVATED.:ehp2..
:eul.
:eul.
.br
.*============================================================================================
:HEADLINE level='2' head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_DEACTIVATE_AP' view='RIGHT'.
.*============================================================================================
:p.
To deactivate an action profile, perform the following steps on the
:TEXTLINK id='IDPNL_USAGE_GUI_ACTIONSPAGE'.&colon.
:ul.
.*-------------
:li.
If you want to use the keyboard&colon.
:ul compact.
:li.Select the action profile you want to activate in the list labeled
:hp2.&IDT_IDDLG_NBACTIONS_ST_ACTIVATED.:ehp2. and bring up the context menu.
.br
Refer to
:sl compact.
:li.:TEXTLINK head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_SELECT'.
:esl.
:li.Select the menu item :hp2.&IDH_IDT_IDMEN_ACTION_ACTIVATED_DEACTIVATE.:ehp2.
:eul.
:p.
If you want to use the mouse&colon.
:ul compact.
:li.Drag the action profile you want to activate from the list labeled
:hp2.&IDT_IDDLG_NBACTIONS_ST_ACTIVATED..:ehp2. to the list labeled
:hp2.&IDT_IDDLG_NBACTIONS_ST_DEFINED.:ehp2..
:eul.
:eul.
.br
.*============================================================================================
:HEADLINE level='2' head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_EDIT_AP' view='RIGHT'.
.*============================================================================================
:p.
To edit an action profile, perform the following steps
on the :TEXTLINK id='IDPNL_USAGE_GUI_ACTIONSPAGE'.&colon.
:ul.
.*-------------
:li.
Select the action profile you want to edit and bring up the context menu.
.br
The action profile might both be activated or not.
.br
Refer to
:sl compact.
:li.:TEXTLINK head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_SELECT'.
:esl.
.*-------------
:li.
Select the menu item :hp2.&IDH_IDT_IDMEN_ACTION_ACTIVATED_EDIT.:ehp2.
.*-------------
:li.
:hp2.&__APPNAME__.:ehp2. brings up a dialog where you can change
the settings for the profile.
:eul.
.br
.*============================================================================================
:HEADLINE level='2' head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_TEST_PAP' view='RIGHT'.
.*============================================================================================
:p.
To test predefined action profiles for closing text sessions, :hp2.&__APPNAME__.:ehp2.
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&colon.
.br
The confirmation message boxes should not appear.
:p.
Of course these profiles work also with every other text session.
:p.
To let :hp2.&__APPNAME__.:ehp2. create the text sessions for you,
perform the following steps
on the :TEXTLINK id='IDPNL_USAGE_GUI_ACTIONSPAGE'.&colon.
:ul.
.*-------------
:li.
If not yet done, activate one or better both predefined action profiles
for closing text sessions. They are labeled
:ul compact.
:li.:hp2.&IDT_IDSTR_PREDEFACTIONPRF_CONFIRMWIN.:ehp2. and
:li.:hp2.&IDT_IDSTR_PREDEFACTIONPRF_CONFIRMFS.:ehp2..
:eul.
:p.
Refer to
:sl compact.
:li.:TEXTLINK head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_ACTIVATE_AP'.
:esl.
.*-------------
:li.
Select one of these action profiles (only when activated) and bring up the context menu.
.br
Refer to
:sl compact.
:li.:TEXTLINK head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_SELECT'.
:esl.
.*-------------
:li.
Select the menu item :hp2.&IDH_IDT_IDMEN_ACTION_ACTIVATED_TEST.:ehp2.
:eul.
.br
.*============================================================================================
:HEADLINE level='2' head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_CHANGELANG' view='RIGHT'.
.*============================================================================================
:p.
To change the language used by :hp2.&__APPNAME__.:ehp2.,
simply run the installation program again by executing the icon
:TEXTLINK id='IDPNL_USAGE_WPSOBJ_WPSINSTALL'.
or run the program from the commandline.
:p.
In the installation program
:ol compact.
.*----------------
:li.select the new language to use and
:li.reinstall the :TEXTLINK id='IDPNL_USAGE_WPSOBJ'.
.*----------------
:eol.
:p.
That will also change the language used by the
:TEXTLINK id='IDPNL_USAGE_GUI'..
:note.
:ul compact.
:li.The new selection of language becomes permanent only if you reinstall the
:hp2.&IDH_IDPNL_USAGE_WPSOBJ.:ehp2.. If you exit the installation program before doing that,
a change of language is ignored.
:eul.
.br
.***
.*** the following section is only compiled for INF
.config IPFTYPE on
.when 'INF' insert
.*============================================================================================
:HEADLINE level='2' head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_DEINSTALL' view='RIGHT'.
.*============================================================================================
:p.
To deinstall :hp2.&__APPNAME__.:ehp2., execute
run the deinstallation program by executing the icon
:TEXTLINK id='IDPNL_USAGE_WPSOBJ_WPSDEINSTALL'.
or run the :TEXTLINK id='IDPNL_INSTALL_DEINSTALL'. from the commandline.
:p.
This will remove the :TEXTLINK id='IDPNL_USAGE_WPSOBJ'. from your desktop.
Then delete the files of the :TEXTLINKTEXT id='IDPNL_PACKAGE' text='&__APPNAME__. package'..
.br
.*********************************************************************************************
:HEADLINE level='1' id='IDPNL_LIMITATIONS' options='clear'.
.*********************************************************************************************
:p.
:ul.
.* ------------
:li.
:hp2.&__APPNAME__.:ehp2. normally is able to process only standard message boxes created
with the :hp2.WinMessageBox:ehp2. API. The IDs for the pushbuttons used within these
standard message box are defined by the programmers toolkit.
:p.
The second API :hp2.WinMessageBox2:ehp2. gives the programmer also the ability to bring up
a message box, but to use pushbuttons with self defined pushbutton texts and pushbutton IDs.
:hp2.&__APPNAME__.:ehp2. will only be able to process these message boxes if at least the
standard pushbutton IDs are used, because it cannot know other IDs than these.
.br
More it will help you a lot if also the pushbutton texts apply somehow to the standard pushbutton texts,
otherwise you will have difficulties to figure out which button text you have to select within
the :hp2.&__APPNAME__.:ehp2. action profile.
.br
An example where all might work ok is, if an application shall bring up all message boxes
with pushbuttons labeled in one specific language no matter what language specific OS/2 it
is running under.
Then the programmer of that application could use the :hp2.WinMessageBox2:ehp2. API and define
the pushbuttons to use within the message box with the standard pushbutton IDs and button texts.
That way a :hp2.&__APPNAME__.:ehp2. action profile could be set up for this message box as usual.
:p.
If you are not sure wether a message box is using the default pushbutton IDs, use the utility
:hp2.PM Tree:ehp2. and check the pushbutton IDs&colon. they should be in the range from 1 to 8.
:note.
:ul compact.
:li.:hp2.PM Tree:ehp2. displays ID 1 as :hp2.DID_OK:ehp2. and ID 2 as :hp2.DID_CANCEL:ehp2.
:li.If the message box that you examine uses less than four pushbuttons,
there will also be one or more unused buttons with IDs from 0x65 to 0x67,
because always four buttons are created and only the IDs of pushbuttons that are visible and
used are redefined.
:eul.
:eul.
.br
.*********************************************************************************************
:HEADLINE level='1' id='IDPNL_THINGS_TO_COME' options='clear'.
.*********************************************************************************************
:ul.
.* ------------
:li.
In a forthcoming version &__PROGRAM__..EXE will be replaced by a
real WPS object and the actual notebook pages will be added
to the WPS object settings notbook. All the commandline
parameters will be replaced by setup strings, so that a
batch interface is still possible. For those who still
want to play around with the commandline and not use WPS objects,
I think of providing a REXX Batch supporting the &__PROGRAM__..EXE
commandline parms of V2.00.
.* ------------
:li.
In future versions the hook will be loadable by the PMSHELL process so that the
overhead of an extra process is eliminated. The memory used by :hp2.&__APPNAME__.:ehp2.
will not decrease though, the only difference will be that the hook loader will
also reside in a DLL which is loaded automatically by PMSHELL. The drawback is
that to get :hp2.&__APPNAME__.:ehp2. out of memory a reboot is needed. This is why
loading by a separate process will stay available, the user then will be able to choose
wether the :hp2.&__APPNAME__.:ehp2. hook executable should be loaded by PMSHELL or
by a separate process.
.br
Note that the checkbox :hp2.&IDH_IDDLG_NBSESSION_CB_ACTIVE.:ehp2. on the
:hp2.&IDH_IDDLG_NBACTIONS.:ehp2. is disabled because in the current version of
:hp2.&__APPNAME__.:ehp2. the hook executable is always loaded by a separate process.
.* ------------
:li.
In the current version of :hp2.&__APPNAME__.:ehp2. the hook executable is always unloaded
when it is deactivated. In future versions it will be also possible to deactivate
it but to leave it in memory. This will be the only option available for loading
the :hp2.&__APPNAME__.:ehp2. hook executable by PMSHELL, but when loading it by a
separate process the user can define wether it should be unloaded when deactvating it.
.br
Note that the checkbox :hp2.&IDH_IDDLG_NBSESSION_CB_UNLOAD.:ehp2. on the
:hp2.&IDH_IDDLG_NBACTIONS.:ehp2. is disabled because in the current version of
:hp2.&__APPNAME__.:ehp2. the hook executable is always unloaded on deactivation.
.* ------------
:li.
:hp2.&__APPNAME__.:ehp2. will be enhanced by a kind of snapshot function or learning mode
where it collects all messages being popped up while the learning mode
is active. This will relief the user from (mis)-typing message texts
when creating new action profiles.
.br
Note that the menuitem :hp2.&IDH_IDT_IDMEN_ACTION_DEFINED_SNIFFER.:ehp2.
in the context popup menu of the list
labeled :hp2.&IDT_IDDLG_NBACTIONS_ST_DEFINED.:ehp2. on the
:hp2.&IDH_IDDLG_NBACTIONS.:ehp2. is disabled in the current version of
:hp2.&__APPNAME__.:ehp2. and reserved for future implementation of that functionality.
.* ------------
:li.
In the current version of :hp2.&__APPNAME__.:ehp2. the message text must be entered just as
it appears in the message box that is to be processed.
It might make sense to allow regular expressions instead, but then I have also to be able
to compare regular expressions with each other, since message texts and so the regular
expressions stored in them have to be unique among all stored profiles. Right now
a simple case sensitive string compare is used to ensure that a new or changed
message text is unique ...
:p.
On the other hand if the :hp2.&IDH_IDT_IDMEN_ACTION_DEFINED_SNIFFER.:ehp2. is implemented
regular expressions might not be needed.
.* ------------
:li.
An export and import functionality for action profiles might be nice. Right now I'm not shure
if that is really needed. Please comment on that via email if you think that is useful.
.* ------------
:li.
The lists on the :hp2.&IDH_IDPNL_USAGE_GUI_ACTIONSPAGE.:ehp2. are only single select lists.
It would be nice to be able to select more than one action profile at a time and to move them
around together. This sounds easy but is really complicated and a lot of work to do
under the covers...
:eul.
.br
.***
.*** ending conditional compile section
.config IPFTYPE off
.*********************************************************************************************
:HEADLINE level='1' id='IDPNL_DETAILS' view='LEFT' options='clear'.
:AUTOLINK id='IDPNL_DETAILS_HOOK'.
.*********************************************************************************************
:p.
.***
.*** the following section is only compiled for HLP
.config IPFTYPE on
.when 'HLP' insert
Select between the following sections&colon.
:p.
.***
.*** ending conditional compile section
.config IPFTYPE off
.***
.*** the following section is only compiled for INF
.config IPFTYPE on
.when 'INF' insert
:TEXTLINK id='IDPNL_DETAILS_HOOK'.
.br
.***
.*** ending conditional compile section
.config IPFTYPE off
.***
.*** the following section is compiled for both INF and HLP
:TEXTLINK id='IDPNL_DETAILS_LISTBOX'.
.br
.***
.*** the following section is only compiled for INF
.config IPFTYPE on
.when 'INF' insert
:TEXTLINK id='IDPNL_DETAILS_LANGUAGE'.
.br
:TEXTLINK id='IDPNL_DETAILS_IPFCPREP'.
.br
:TEXTLINK id='IDPNL_DETAILS_SYSLEVEL_MGR'.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_DETAILS_HOOK' view='RIGHT'.
.*============================================================================================
:p.
:p.
:hp7.PM Hooks in general:ehp7.
.br
There are different categories of hooks and the system sends every message to the
hook of the appropriate category. After the installation of the hook all messages are send
first of all to that hook. The hook normally reacts only on certain messages, while the most
of them are passed through to the receiver of the message
werden.
.br
The two most important hooks are the SendMessage hook and the Inoput hook.
The first receives all messages, which are sent synchronously to a PM window with
the API :hp2.WinSendMsg:ehp2.. The SendMessage hook must pass the message to the receiver,
but before doing that he can perform any necessary action.
.br
The Input hook receives all messages, that are posted asynchronously to a PM window
with tha API :hp2.WinPostMsg:ehp2. and are put into the message queue of that window until
the message can be processed. The Input hook can not only react on the message, but can also
prevent the message from being put into the receivers message queue. That way the receiver
will never get this message.
:p.
:hp7.The &__APPNAME__. PM hooks:ehp7.
.br
:hp2.&__APPNAME__.:ehp2. installs both a SendMessage hook and an Input hook.
The :hp2.&__APPNAME__.:ehp2. SendMessage hook waits for a focus change message.
.br
These messages are sent from the PM to every dialog window, which subcontrol
receives or losses the input focus. :hp2.&__APPNAME__.:ehp2. can determine wether
the dialog is a message box. If this is the case, the message text of the message
box is compared to the active action profiles. Is the message text of the message box
equal to the message text of an active action profile, the action defined in the
action profile is performed indirectly.
:p.
The action cannot be performed directly, because on the first reception of a focus
change message a message box is not yet completely initialized. Only the default pushbutton
is initialized and available for an action at this time, all others are not.
:p.
In order to be able to perform actions on all pushbuttons, :hp2.&__APPNAME__.:ehp2.
must make sure that it receives control again at a later point of time. It uses
:hp2.WinPostMsg:ehp2. to post a special message to the message box. Since every PM window
cannot receive messages stored in it's message queue until the initialization of the
window is finished, the message box receives this special message when it is completely
initialized.
.br
At this time the :hp2.&__APPNAME__.:ehp2. Input hook catches this message and
can perform the desired action on all of the pushbuttons, which are now available.
:p.
A special case is, when the desired action is to set a pushbutton as the default pushbutton
(and this setting the focus on it)&colon. then :hp2.&__APPNAME__.:ehp2. must ensure that
this action is performed only once, when the message box is activated for the first time
and one of its subcontrols is receiving the focus.
.br
Otherwise each focus change within the message box, so for example moving the input focus with
the arrow keys, would cause the same action again and the focus would be set back again
to the same pushbutton by :hp2.&__APPNAME__.:ehp2..
The result would be that the focus within the message box could not be changed via the keyboard
and with the keyboard only that one pushbutton could be reached.
:p.
:hp7.Technical details about PM hooks:ehp7.
.br
A PM hook is a function which has to reside in a DLL. The process which sets up the hook
has to reside in memory until the hook is released again.
.br
So as a minimum for setting up a hook an executable and a DLL is needed.
In order to minimze the amount of memory that is used by the hook
since V2.00 of :hp2.&__APPNAME__.:ehp2. the executable that is loading the hook
is separated from &__PROGRAM__..EXE.
.br
This way it was possible to enhance the user interface within &__PROGRAM__..EXE
a lot while the the hook still needs only the same amount of memory like before.
Since &__PROGRAM__..EXE is needed only for configuration or initialization,
the only memory needed when :hp2.&__APPNAME__.:ehp2. runs in the background is the
little amount of memory that is used by the hook.
:p.
The two following modules for the hook loader and the hook DLL do the most of the work
and so are the most interesting (and though the smallest) of all :hp2.&__APPNAME__.:ehp2.
source files&colon.
:ul compact.
:li.:TEXTLINKTEXT id='IDPNL_DETAILS_HOOK_LOADER_SRC' text='hook loader executable'.
:li.:TEXTLINKTEXT id='IDPNL_DETAILS_HOOK_HOOK_SRC' text='hook dll'.
:eul.
:p.
See also the programmers toolkit documentation for further information on
sending and posting PM messages and the PM hooks.
.br
.*--------------------------------------------------------------------------------------------
:HEADLINE level='3' id='IDPNL_DETAILS_HOOK_LOADER_SRC'.
.*--------------------------------------------------------------------------------------------
:p.
:hp2.SNDYSHK.C:ehp2.
:xmp.
.im sndyshk.imc
:exmp.
.br
.*--------------------------------------------------------------------------------------------
:HEADLINE level='3' id='IDPNL_DETAILS_HOOK_HOOK_SRC'.
.*--------------------------------------------------------------------------------------------
:p.
:hp2.SNDYSDLL.H:ehp2.
:xmp.
.im sndysdll.imh
:exmp.
:p.
:hp2.SNDYSDLL.C:ehp2.
:xmp.
.im sndysdll.imc
:exmp.
.br
.***
.*** ending conditional compile section
.config IPFTYPE off
.***
.*** the following section is compiled for both INF and HLP
.*============================================================================================
:HEADLINE level='2' id='IDPNL_DETAILS_LISTBOX' view='RIGHTTOPHALF'.
:AUTOLINK id='IDPNL_DETAILS_LISTBOX_DMLB'.
.*============================================================================================
:p.
In order to provide a user fiendly interface
:hp2.&__APPNAME__.:ehp2. takes advantage of the easy to program and easy to use
:TEXTLINK id='IDPNL_DETAILS_LISTBOX_DMLB'. control and the
:TEXTLINK id='IDPNL_DETAILS_LISTBOX_MCLB'. PM control functionality.
:p.
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.
:hp2.&__APPNAME__.:ehp2. uses a slightly modified version of the
:TEXTLINK id='IDPNL_DETAILS_LISTBOX_DMLB'. control.
:p.
Look out for LB.ZIP on IBM ftp sites, which contains the complete source code and
INF reference files.
:p.
For more information on programming with these controls
control, see :hp2.OS/2 Developer Magazine:ehp2., Nov/Dec 1995.
.br
.*--------------------------------------------------------------------------------------------
:HEADLINE level='3' id='IDPNL_DETAILS_LISTBOX_DMLB' view='RIGHTBOTTOMHALF'.
.*--------------------------------------------------------------------------------------------
:p.
Excerpt from DMLB.INF&colon.
:p.
:hp7.Acknowledgments:ehp7.
.br
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.
:p.
:hp7.Description:ehp7.
.br
The :hp3.Direct Manipulation ListBox:ehp3. 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.
.br
.*--------------------------------------------------------------------------------------------
:HEADLINE level='3' id='IDPNL_DETAILS_LISTBOX_MCLB' view='RIGHTBOTTOMHALF'.
.*--------------------------------------------------------------------------------------------
:p.
Excerpt from MCLB.INF&colon.
:p.
:hp7.Acknowledgments:ehp7.
.br
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.
:p.
:hp7.Description:ehp7.
.br
The :hp3.MultiColumn ListBox:ehp3. 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.
:p.
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.
:p.
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.
.br
.***
.*** the following section is only compiled for INF
.config IPFTYPE on
.when 'INF' insert
.*============================================================================================
:HEADLINE level='2' id='IDPNL_DETAILS_LANGUAGE' view='RIGHT'.
.*============================================================================================
:p.
:hp2.&__APPNAME__.:ehp2. currently provides english and german national language support.
:p.
The :TEXTLINKTEXT id='IDPNL_PACKAGE' text='&__APPNAME__. package'. contains a zip file
with the language specific files for :hp2.&__APPNAME__.:ehp2. in the english version.
You are welcome to translate them to your language and email them to me
if your language is not yet supported by :hp2.&__APPNAME__.:ehp2..
Your name will show up in the :TEXTLINK id='IDPNL_CREDITS_TRANSLATORS'. section
in the :hp2.&__APPNAME__.:ehp2. version to follow.
:p.
The language specific files are&colon.
:parml tsize=20 break=none.
:pt.
:hp2.SNDYSENG.RCH:ehp2.
:pd.
this file contains the strings used within the :hp2.&__APPNAME__.:ehp2. GUI
:pt.
:hp2.SNDYSENG.H:ehp2.
:pd.
this file contains the panel titles used within the :hp2.&__APPNAME__.:ehp2.
HLP and INF file
:pt.
:hp2.SNDYSENG.SRC:ehp2.
:pd.
this file contains the source for the :hp2.&__APPNAME__.:ehp2.
HLP and INF file
:pt.
:hp2.SNDYSENG.TXT:ehp2.
:pd.
this file contains the messages for the :hp2.&__APPNAME__.:ehp2.
:TEXTLINK id='IDPNL_INSTALL_INSTALL'. and
:li.:TEXTLINK id='IDPNL_INSTALL_DEINSTALL'..
:pt.
:hp2.MACROS.IPH:ehp2. and
.br
:hp2.SENDYES.H:ehp2.
:pd.
these files contain the macros used within :hp2.SNDYSENG.SRC:ehp2..
Translators should not modify these file, as they are not language specific.
They are only supplied for to understand all the macros used within the IPF source file.
:eparml.
:p.
Refer also to section
:sl compact.
:li.:TEXTLINK id='IDPNL_PACKAGE'.
:esl.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_DETAILS_IPFCPREP' view='RIGHT'.
.*============================================================================================
:p.
For developing both :hp2.&__APPNAME__.:ehp2. HLP and INF files,
the :hp2.IPFC Preprocessor:ehp2. Version 1.0 by Doug Haigh is used.
:p.
This preprocessor allows the use of
:ul.
.*---------
:li.
simple BookMaster macros with keyword and positional parameters
which greatly simplify the use of IPF links, autolinks and window positioning.
.*---------
:li.
C header files can be imbedded via a special imbed tag (.imd).
The C-defines are resolved as BookMaster symbols and then can be
used within BookMaster macros.
.*---------
:li.
imbedded files, which do not reside in the current directory.
They are also searched in the path given by the INCLUDE
environment variable.
:li.
Bookmaster 1.0 Vanilla conditional compile variables. This allows to conditional compile
parts of the ipf source file for the HLP file and other parts for the INF
file, while the rest is compiled for both online help files. This way it
ias possible to have a single source file for to compile both the HLP and
the INF file.
.*---------
:eul.
:p.
For more information about the language specific files and the
source for the english version of the HLP and INF file,
refer to section
:sl compact.
:li.:TEXTLINK id='IDPNL_DETAILS_LANGUAGE'.
:esl.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_DETAILS_SYSLEVEL_MGR' view='RIGHT'.
.*============================================================================================
:p.
For creating the syslevel file for :hp2.&__APPNAME__.:ehp2. the syslevel manager
:hp2.SLVMGR:ehp2. of Duane S. Wood is used.
:p.
This program is out of a package that contains this manager as a command line utlility,
a textfile, which describes the syslevel file format and a simple PM application for to
create and / or edit syslevel files.
:p.
The package was last updated in 1993, but the syslevel file format seems not to have changed
meanwhile.
.*********************************************************************************************
:HEADLINE level='1' id='IDPNL_REVISION_HISTORY' view='LEFT' options='clear'.
:AUTOLINK id='IDPNL_REVISION_HISTORY_200'.
.*********************************************************************************************
:p.
:TEXTLINKTEXT id='IDPNL_REVISION_HISTORY_200' text='Version 2.00'.
.br
:TEXTLINKTEXT id='IDPNL_REVISION_HISTORY_110' text='Version 1.10'.
.br
:TEXTLINKTEXT id='IDPNL_REVISION_HISTORY_100' text='Version 1.00'.
.br
:TEXTLINKTEXT id='IDPNL_REVISION_HISTORY_070' text='Version 0.70'.
.br
:TEXTLINKTEXT id='IDPNL_REVISION_HISTORY_060' text='Version 0.60'.
.br
:TEXTLINK id='IDPNL_FILE_ID_DIZ'.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_REVISION_HISTORY_200' view='RIGHT'.
.*============================================================================================
:ul.
.* ------------
:li.
:TEXTLINK id='IDPNL_DETAILS_LANGUAGE'. added.
Messages, dialogs and help texts are currently available in
english and german.
.* ------------
:li.
The hook is now loaded by a separate executable rather than by
&__PROGRAM__..EXE. This way the amount of memory used by the active hook is
reduced to an absolute minimum while the user interface within
&__PROGRAM__..EXE can be enhanced in functionality. The hook executable is
only to be controlled by &__PROGRAM__..EXE.
:p.
For technical details about the :hp2.&__APPNAME__.:ehp2. hook refer to section
:sl compact.
:li.:hp2.&IDH_IDPNL_DETAILS_HOOK.:ehp2. in :TEXTLINK id='IDPNL_DETAILS'.
:esl.
.* ------------
:li.
The executable loading the :hp2.&__APPNAME__.:ehp2. hook dll is
now excluded from the shutdown processing. That way it remains
in memory until all text sessions have closed.
.* ------------
:li.
Calling &__PROGRAM__..EXE without any command line parameters brings up
the new :TEXTLINK id='IDPNL_USAGE_GUI'.. It consists of a
notebook control, which you can nearly use like a settings notebook of a
WPS object. It allows the user to define :TEXTLINK id='IDPNL_USAGE_ACTIONPRF'.
in order to specify any message boxes wich are to be intercepted
and processed automatically.
:p.
The GUI is using the functionality of the :TEXTLINK id='IDPNL_DETAILS_LISTBOX_DMLB'.
control and the :TEXTLINK id='IDPNL_DETAILS_LISTBOX_MCLB'. PM control to provide
a user friendly and though very fast GUI.
:p.
For more technical details refer to section
:sl compact.
:li.:hp2.&IDH_IDPNL_DETAILS_LISTBOX.:ehp2. in :TEXTLINK id='IDPNL_DETAILS'.
:esl.
.* ------------
:li.
:hp2.&__APPNAME__.:ehp2. comes with three
:TEXTLINK id='IDPNL_USAGE_PREDEF_ACTIONPRF'.
for the confirmation message boxes which come up when you want to close
OS/2 and DOS VIO and fullscreen text sessions or when you invoke a shutdown.
.br
This way the functionality of previous versions of :hp2.&__APPNAME__.:ehp2.
is still available without any need of customization by the user.
.* ------------
:li.
TESTALL.CMD has been removed.
Testing for closing textsessions is now done on the
:TEXTLINK id='IDPNL_USAGE_GUI_ACTIONSPAGE'. within the :TEXTLINK id='IDPNL_USAGE_GUI'..
This way :hp2.&__APPNAME__.:ehp2. can take care of that the predefined action profiles
are really active when you test them.
.br
Refer also to
:sl compact.
:li.:TEXTLINK head='&IDH_IDPNL_HOW__BASETEXT.' id='IDPNL_HOW_TEST_PAP'.
:esl.
.* ------------
:li.
:hp2.&__APPNAME__.:ehp2. now comes with a
:TEXTLINK id='IDPNL_INSTALL_INSTALL'., which creates a :hp2.&__APPNAME__.:ehp2.
folder on the desktop with several :TEXTLINK id='IDPNL_USAGE_WPSOBJ'. in it, and with a
:TEXTLINK id='IDPNL_INSTALL_DEINSTALL'., which removes these objects again.
:p.
When you move the selection cursor within the :hp2.&__APPNAME__.:ehp2.
folder and select one of the objects and press the F1 key, the appropriate
help panel for that object will pop up.
.* ------------
:li.
new command line parameters&colon.
:ul compact.
:li.:TEXTLINK id='IDPNL_USAGE_PARM_LOAD'.
:li.:TEXTLINK id='IDPNL_USAGE_PARM_UNLOAD'.
:li.:TEXTLINK id='IDPNL_USAGE_PARM_ACTIVATE'.
:li.:TEXTLINK id='IDPNL_USAGE_PARM_DEACTIVATE'.
:li.:TEXTLINK id='IDPNL_USAGE_PARM_STATUS'.
:li.:TEXTLINK id='IDPNL_USAGE_PARM_BATCH'.
:li.:TEXTLINK id='IDPNL_USAGE_PARM_QUIET'.
:eul.
.* ------------
:li.
removed command line parameters&colon.
:ul compact.
:li.parameter :hp2./SWITCHENTRY:ehp2. is not longer supported. The hook executable
is to be controlled ONLY by the :hp2.&__APPNAME__.:ehp2. GUI or via the parameters
:hp2./UNLOAD:ehp2. and :hp2./LOAD:ehp2. or :hp2./ACTIVATE:ehp2. and :hp2./DEACTIVATE:ehp2.
for &__PROGRAM__..EXE.
:li.parameter :hp2./CLOSE:ehp2. is replaced by the parameter
:TEXTLINK id='IDPNL_USAGE_PARM_UNLOAD'.. The new parameter does not close an active
instance of SENDYES.EXE anymore, but rather an active instance of the now separated
hook executable.
:eul.
.* ------------
:li.
Online help book added (you are just reading it). Note that the HLP file for the
:hp2.&__APPNAME__.:ehp2. GUI is an excerpt from the INF file.
.* ------------
:li.
:hp2.&__APPNAME__.:ehp2. now comes with a syslevel file that will show the version of
:hp2.&__APPNAME__.:ehp2. when you execute the OS/2 :hp2.syslevel:ehp2. command.
.br
For more information on the :hp2.&__APPNAME__.:ehp2. syslevel file refer also to
:sl compact.
:li.:TEXTLINK id='IDPNL_DETAILS_SYSLEVEL_MGR'.
:esl.
.* ------------
:li.
most of the source is not distributed any longer. The :hp2.&__APPNAME__.:ehp2. source now has
grown so big that I decided that from now on I distribute only
:ul.
:li.
the source for the hook and the hook loading executable within this INF file,
because I think this is the source of most interest.
:li.
the source files for both the HLP and INF file.
They contain some technical hints for developing online help books with
the :hp2.&IDH_IDPNL_DETAILS_IPFCPREP.:ehp2. features like bookmaster macros
and conditional compile variables.
:eul.
:p.
Refer to
:sl compact.
:li.:TEXTLINK id='IDPNL_DETAILS_HOOK'.
:li.:TEXTLINK id='IDPNL_DETAILS_IPFCPREP'.
:li.:TEXTLINK id='IDPNL_DETAILS_LANGUAGE'.
:esl.
:p.
The other source files contain normal GUI stuff for which details can
be taken out of the programmers toolkit (from where also I got all the Information).
.br
If you have specific questions, don't hesitate to drop me a line
and I will do my best to answer you.
:eul.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_REVISION_HISTORY_110' view='RIGHT'.
.*============================================================================================
:ul.
.* ------------
.*:li.
.*source not shipped anylonger, but I email source on request.
.* ------------
:li.
:hp2.&__APPNAME__.:ehp2. is now compiled with IBM C Set++ V2.
.br
No need for the emx runtime anylonger.
.* ------------
:li.
New command line parameters&colon.
:ul compact.
:li.parameter /? or /Help pops up a brief help
:li.parameter /Close closes active :hp2.&__APPNAME__.:ehp2. session.
If :hp2.&__APPNAME__.:ehp2. is not active, you will receive an error msg box.
:li.parameter /Batch surpesses msg boxes and generates
notification/alarm sounds instead
:li.parameter /Switchentry creates a switch list
equivalent to /S in :hp2.&__APPNAME__.:ehp2. V1.00
:li.specifying the first letter of the parameters is
sufficient, so /C and /Close is equivalent
:li.the parameters are case insensitive,
so parameters /CLOSE, /Close and /close are equivalent
:li.the switch character preceding the parameters can be '/' or '-',
so parameters /Close and -Close are equivalent
:eul.
.* ------------
:li.
An error msg box popup or error alarm is brought up, when
:ul compact.
:li.:hp2.&__APPNAME__.:ehp2. is already active
:li.:hp2.&__APPNAME__.:ehp2. cannot be properly initialized
:li.:hp2.&__APPNAME__.:ehp2. is not active when to be closed with parameter /C
:li.an invalid parameter was specified
:eul.
.* ------------
:li.
An info msg box popup is brought up, when
:ul compact.
:li.:hp2.&__APPNAME__.:ehp2. is closed successfully with parameter /C
:eul.
.* ------------
:li.
Only message boxes with messages beginning with "This message
may contain an active program." are now closed. This prevents
SendYes! from closing ANY message box with MBID_YES, like it did
before! :hp2.&__APPNAME__.:ehp2. reads the apropriate message out of the PM
resources, so it is language neutral. Unfortunately the message
used for closing OS/2 Fullscreen sessions is slightly different
in the second sentence, so the message is only compared up to
the end of the first sentence.
.br
I hope that this will stay compatible with future versions
of OS/2 and is really compatible with all different language versions
of OS/2. To test it out&colon.
.br
Use TESTALL.CMD to bring up all four kind of sessions and close them
with SendYes! active&colon.
.br
if they close well without confirmation boxes, everything is fine.
.br
If not, please email and tell me so...
:eul.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_REVISION_HISTORY_100' view='RIGHT'.
.*============================================================================================
:ul.
.* ------------
:li.
Now using emx0.9a, fix 6 (emxfix06.zip). Be sure to get the
updated emxrt.zip runtime DLL's (see README.TXT)
.* ------------
:li.
'/S' parameter now tells SendYes! to put an entry in the switch list
.* ------------
:li.
SendYes! icon now bound to executable file
:eul.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_REVISION_HISTORY_070' view='RIGHT'.
.*============================================================================================
:ul.
.* ------------
:li.
Now using emx0.9a, fix 5 (emxfix05.zip). Be sure to get the
updated emxrt.zip runtime DLL's.
.* ------------
:li.
Wouldn't close full-screen sessions. Fixed.
:eul.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_REVISION_HISTORY_060' view='RIGHT'.
.*============================================================================================
:ul.
.* ------------
:li.
Initial release
:eul.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_FILE_ID_DIZ' view='RIGHT'.
.*============================================================================================
:xmp.
.im file_id.diz
:exmp.
.br
.*********************************************************************************************
:HEADLINE level='1' id='IDPNL_CREDITS' view='LEFT' options='clear'.
:AUTOLINK id='IDPNL_CREDITS_IDEA'.
.*********************************************************************************************
:p.
:TEXTLINK id='IDPNL_CREDITS_IDEA'.
.br
:TEXTLINK id='IDPNL_CREDITS_LISTBOX'.
.br
:TEXTLINK id='IDPNL_CREDITS_IPFCPREP'.
.br
:TEXTLINK id='IDPNL_CREDITS_SYSLEVEL_MGR'.
.br
:TEXTLINK id='IDPNL_CREDITS_TRANSLATORS'.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_CREDITS_IDEA' view='RIGHT'.
.*============================================================================================
:p.
All credits for the idea and the creating of the first version of
:hp2.&__APPNAME__.:ehp2. belong to Wes Santee.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_CREDITS_LISTBOX' view='RIGHT'.
.*============================================================================================
:p.
The :hp2.&__APPNAME__.:ehp2. GUI makes use of new listbox controls,
which very much enhance the functionality of a listbox.
:p.
All credits for giving me that easy programming and you that flexible
GUI handling belong to
:ul compact.
:li.
Alan Warren of IBM, Yorktown Research and
.br
Mark McMillan of IBM, Research Triangle Park, USA
.br
for the :hp2.&IDH_IDPNL_DETAILS_LISTBOX_DMLB.:ehp2. control and
:li.
Charles Cooper of IBM, United Kingdom Warwick Development group and
.br
Mark McMillan of IBM, Research Triangle Park, USA.
.br
for the :hp2.&IDH_IDPNL_DETAILS_LISTBOX_MCLB.:ehp2. control.
:eul.
:p.
For technical details refer to section
:sl compact.
:li.:hp2.&IDH_IDPNL_DETAILS_LISTBOX.:ehp2. in :TEXTLINK id='IDPNL_DETAILS'.
:esl.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_CREDITS_IPFCPREP' view='RIGHT'.
.*============================================================================================
:p.
For precompilation of the source for both :hp2.&__APPNAME__.:ehp2. HLP and INF files,
the :hp2.IPFC Preprocessor:ehp2. Version 1.0 by Doug Haigh is used.
:p.
For technical details refer to section
:sl compact.
:li.:hp2.&IDH_IDPNL_DETAILS_IPFCPREP.:ehp2. in :TEXTLINK id='IDPNL_DETAILS'.
:esl.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_CREDITS_SYSLEVEL_MGR' view='RIGHT'.
.*============================================================================================
:p.
For creating the syslevel file for :hp2.&__APPNAME__.:ehp2. the syslevel manager
:hp2.SLVMGR:ehp2. is used.
This program is from Duane S. Wood of OS/2 Development Boca Raton, Florida.
:p.
For technical details refer to section
:sl compact.
:li.:hp2.&IDH_IDPNL_DETAILS_SYSLEVEL_MGR.:ehp2. in :TEXTLINK id='IDPNL_DETAILS'.
:esl.
.br
.*============================================================================================
:HEADLINE level='2' id='IDPNL_CREDITS_TRANSLATORS' view='RIGHT'.
.*============================================================================================
:p.
Sorry, no translators yet ...
:p.
If your language is not yet supported by :hp2.&__APPNAME__.:ehp2. and you would like
to help me supporting your language, refer to section :TEXTLINK id='IDPNL_DETAILS_LANGUAGE'..
.br
.***
.*** ending conditional compile section
.config IPFTYPE off
.*============================================================================================
:HEADLINE level='1' id='IDPNL_HIDDEN_RIGHT_MOUSE_BUTTON' options='hide' view='RIGHT'.
.*============================================================================================
:p.
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 :hp2.Mouse:ehp2. object in the folder
:hp2.System Setup:ehp2..
:p.
The following settings of the following settings notebook pages impact the way
:hp2.&__APPNAME__.:ehp2. works concerning the usage of the right mouse button.
If you change them, use the mouse the way you configured it.
.br
Note that the right mouse button is normally referred to as mouse button 2.
:parml tsize=8 break=none.
:pt.:hp2.Setup:ehp2.
:pd.
:ul.
:li.:hp2.Left-handed:ehp2. mouse usage (switches mouse button 1 and 2)
:eul.
:pt.:hp2.Mappings:ehp2.
:pd.
:ul.
:li.selecting mouse button 1 for :hp2.drag and drop:ehp2.
:note.
If you drag action profiles with mouse button 1 the drag cursor is not visible,
but dragging still works.
:li.selecting different settings for :hp2.pop-up menus:ehp2. than :hp2.single click:ehp2.
of :hp2.button 2:ehp2. without any control keys
:eul.
:eparml.
:euserdoc.