home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 14 Text / 14-Text.zip / launch.zip / LAUNCH.INF (.txt)
OS/2 Help File  |  1994-05-12  |  159KB  |  2,255 lines

  1.  
  2. ΓòÉΓòÉΓòÉ <hidden> Launching Objects on the OS/2 Desktop ΓòÉΓòÉΓòÉ
  3.  
  4. Launching Objects on the OS/2 Desktop 
  5.  
  6. by:  Bruce E. H╨ñgman 
  7.  
  8. Electronic Data Systems Corporation 
  9.  
  10. Boca Raton, Florida 
  11.  
  12. May, 1994 
  13.  
  14.  
  15. ΓòÉΓòÉΓòÉ 1. Abstract ΓòÉΓòÉΓòÉ
  16.  
  17.  This article discusses different methods of launching applications by using 
  18.  the OS/2 2.1 Workplace Shell (WPS).  Then, using these methods, the article 
  19.  offers different approaches to customizing the OS/2 2.1 desktop both during 
  20.  and after installation. 
  21.  
  22.  It addresses using applications of all types, both on an individual 
  23.  workstation and across a LAN, showing how OS/2 desktop objects can be defined 
  24.  to easily access applications that reside on either OS/2 LAN or other LAN 
  25.  systems. 
  26.  
  27.  Sections in this article address PM session window creation and message 
  28.  processing, as well as WPS API function calls.  The section on Window function 
  29.  calls, WinCreateObject, contains information about setup strings for objects. 
  30.  The section on wpSetup contains detailed information about some setup-string 
  31.  keyword value pairs. 
  32.  
  33.  I also discuss my public-domain program, PMSW, which is a support mechanism 
  34.  for launching objects of different session types, as well as a means of 
  35.  synchronizing execution of different sessions at a high level. PMSW uses the 
  36.  entries in the PM desktop's Window List (also known as the "switch list" in 
  37.  the PM programming documentation) to determine which sessions are running. 
  38.  
  39.  This article is based on inquiries from several OS/2 customers who to install 
  40.  standardized desktops on all of the computers in their environments.  Some of 
  41.  the REXX programs described in this article are actual software solutions to 
  42.  real problems. 
  43.  
  44.  
  45. ΓòÉΓòÉΓòÉ 1.1. Disclaimer ΓòÉΓòÉΓòÉ
  46.  
  47. References in this article to IBM products, programs, or services do not imply 
  48. that IBM intends to make these available in all countries in which IBM 
  49. operates.  Any reference to an IBM product, program, or service is not intended 
  50. to state or imply that only IBM's product, program, or service may be used. 
  51. Any functionally equivalent program that does not infringe any of IBM's 
  52. intellectual property rights may be used instead of the IBM product, program, 
  53. or service. 
  54.  
  55. The information contained in this article has not been submitted to any formal 
  56. IBM test and is distributed as-is.  The use of this information or the 
  57. implementation of any of these techniques is a customer responsibility and 
  58. depends on the customer's ability to evaluate and integrate them into the 
  59. customer's operational environment.  While each item may have been reviewed by 
  60. IBM for accuracy in a specific situation, there is no guarantee that the same 
  61. or similar results will be obtained elsewhere.  Customers attempting to adapt 
  62. these techniques to their own environments do so at their own risk. 
  63.  
  64.  
  65. ΓòÉΓòÉΓòÉ <hidden> Figure 1:  Program Tab ΓòÉΓòÉΓòÉ
  66.  
  67.  
  68. ΓòÉΓòÉΓòÉ <hidden> Figure 2:  Default Command Processors ΓòÉΓòÉΓòÉ
  69.  
  70. Figure 2:  Default Command Processors 
  71.  
  72. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  73. ΓöéSession        ΓöéDefault Command Processor               Γöé
  74. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  75. ΓöéOS/2, PM       Γöé\OS2\CMD.EXE                            Γöé
  76. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  77. ΓöéWindows        Γöé\OS2\MDOS\WINOS2\WINOS2.COM             Γöé
  78. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  79. ΓöéDOS            Γöé\OS2\MDOS\COMMAND.COM                   Γöé
  80. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  81. Figure 2:  Default Command Processors 
  82.  
  83.  
  84. ΓòÉΓòÉΓòÉ <hidden> Figure 3:  Special Parameter Strings ΓòÉΓòÉΓòÉ
  85.  
  86. Figure 3.  Special String Components in Parameters Entry Field of WPProgram 
  87. Object 
  88.  
  89. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  90. ΓöéString    ΓöéDescription                                  Γöé
  91. ΓöéComponent Γöé                                             Γöé
  92. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  93. Γöé%*        ΓöéFully qualified path of the file             Γöé
  94. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  95. Γöé%**P      ΓöéPath with last backslash (except at root)    Γöé
  96. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  97. Γöé%**D      ΓöéPath with ':' or UNC name                    Γöé
  98. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  99. Γöé%**N      ΓöéName without extension                       Γöé
  100. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  101. Γöé%**F      ΓöéName with extension                          Γöé
  102. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  103. Γöé%**E      ΓöéExtension without period                     Γöé
  104. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  105. Figure 3.  Special String Components in Parameters Entry Field of WPProgram 
  106. Object 
  107.  
  108.  
  109. ΓòÉΓòÉΓòÉ <hidden> Figure 4:  Filename Association ΓòÉΓòÉΓòÉ
  110.  
  111.  
  112. ΓòÉΓòÉΓòÉ <hidden> Figure 5:  Type Association ΓòÉΓòÉΓòÉ
  113.  
  114.  
  115. ΓòÉΓòÉΓòÉ <hidden> Figure 6:  Defining New Default Action ΓòÉΓòÉΓòÉ
  116.  
  117.  
  118. ΓòÉΓòÉΓòÉ <hidden> Figure 7:  File Name & Extension Association ΓòÉΓòÉΓòÉ
  119.  
  120.  
  121. ΓòÉΓòÉΓòÉ <hidden> Figure 8:  Adding a New Menu Item ΓòÉΓòÉΓòÉ
  122.  
  123.  
  124. ΓòÉΓòÉΓòÉ <hidden> Figure 9:  RUN Commands in CONFIG.SYS ΓòÉΓòÉΓòÉ
  125.  
  126. RUN=C:\OS2\XCOPY.EXE C:\OS2\OS2.INI    C:\OS2\INSTALL
  127. RUN=C:\OS2\XCOPY.EXE C:\OS2\OS2SYS.INI C:\OS2\INSTALL
  128. RUN=C:\OS2\XCOPY.EXE C:\CONFIG.SYS     C:\OS2\INSTALL
  129. rem  Figure 9: RUN Commands for Backing Up Critical OS/2 Files
  130.  
  131.  
  132. ΓòÉΓòÉΓòÉ <hidden> Figure 10:  Novell Entries in INI.RC ΓòÉΓòÉΓòÉ
  133.  
  134. "PM_InstallObject" "Novell;WPFolder;<WP_DESKTOP>;UPDATE" "ICONPOS=25 87;OBJECTID=<Novell_Folder>"
  135.  
  136. "PM_InstallObject" "Netware Tools;WPProgram;<Novell_Folder>;UPDATE" "STARTUPDIR=C:\NETWARE;EXENAME=C:\NETWARE\NWTOOLS.EXE;PROGTYPE=PM"
  137.  
  138. "PM_InstallObject" "Network Printer;WPProgram;<Novell_Folder>;UPDATE" "STARTUPDIR=C:\NETWARE;EXENAME=C:\NETWARE\NPRINTER.EXE;PROGTYPE=PM"
  139.  
  140. "PM_InstallObject" "Install;WPProgram;<Novell_Folder>;UPDATE" "STARTUPDIR=C:\NETWARE;EXENAME=C:\NETWARE\INSTALL.EXE;PROGTYPE=PM"
  141.  
  142.  Figure 10: .RC File Entries for Novell NetWare 
  143.  
  144.  
  145. ΓòÉΓòÉΓòÉ <hidden> Figure 11:  WPObject Keyname/Value Pairs ΓòÉΓòÉΓòÉ
  146.  
  147. Figure 11.  Keyname/Value Pairs for the WPObject Class 
  148.  
  149. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  150. ΓöéKeyname     ΓöéValue           ΓöéDescription                   Γöé
  151. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  152. ΓöéTITLE       Γöé=title;         ΓöéObject's displayed title      Γöé
  153. Γöé            Γöé                Γöéstring.                       Γöé
  154. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  155. ΓöéICONFILE    Γöé=filespec;      ΓöéSpecifies the .ICO file       Γöé
  156. Γöé            Γöé                Γöécontaining the icon bitmap to Γöé
  157. Γöé            Γöé                Γöédisplay.                      Γöé
  158. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  159. ΓöéHELPPANEL   Γöé=id;            ΓöéDefault help panel.  The id isΓöé
  160. Γöé            Γöé                Γöéusually a resource in a .DLL. Γöé
  161. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  162. ΓöéHELPLIBRARY Γöé=filespec;      ΓöéDefines the help library.     Γöé
  163. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  164. ΓöéTEMPLATE    Γöé=YES;           ΓöéThis object is a template thatΓöé
  165. Γöé            Γöé                Γöécan be used to create similar Γöé
  166. Γöé            Γöé                Γöéobjects.                      Γöé
  167. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  168. Γöé            Γöé=NO;            ΓöéThis object is not a template.Γöé
  169. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  170. ΓöéNODELETE    Γöé=YES;           ΓöéThis object cannot be deleted.Γöé
  171. Γöé            Γöé                ΓöéSetting this property for an  Γöé
  172. Γöé            Γöé                Γöéobject restricts users from   Γöé
  173. Γöé            Γöé                Γöédragging it to the shredder.  Γöé
  174. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  175. Γöé            Γöé=NO;            ΓöéThis object can be deleted.   Γöé
  176. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  177. ΓöéNOCOPY      Γöé=YES;           ΓöéThis object cannot be copied. Γöé
  178. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  179. Γöé            Γöé=NO;            ΓöéThis object can be copied.    Γöé
  180. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  181. ΓöéNOMOVE      Γöé=YES;           ΓöéThis object cannot be moved.  Γöé
  182. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  183. Γöé            Γöé=NO;            ΓöéThis object can be moved.     Γöé
  184. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  185. ΓöéNOLINK      Γöé=YES;           ΓöéThis object cannot be linked  Γöé
  186. Γöé            Γöé                Γöé(make a shadow from)          Γöé
  187. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  188. Γöé            Γöé=NO;            ΓöéThis object can be linked.    Γöé
  189. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  190. ΓöéNOTVISIBLE  Γöé=YES;           ΓöéThis object is invisible.     Γöé
  191. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  192. Γöé            Γöé=NO;            ΓöéThis object is visible.       Γöé
  193. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  194. ΓöéNOPRINT     Γöé=YES;           ΓöéThis object cannot be printed.Γöé
  195. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  196. Γöé            Γöé=NO;            ΓöéThis object is printable.     Γöé
  197. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  198. ΓöéICONRESOURCEΓöé=id,module;     ΓöéThis defines the id of the    Γöé
  199. Γöé            Γöé                Γöéicon resource in the module's Γöé
  200. Γöé            Γöé                Γöédynamic link library (DLL).   Γöé
  201. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  202. ΓöéICONPOS     Γöé=x,y;           ΓöéPlaces the object's icon on   Γöé
  203. Γöé            Γöé                Γöéthe desktop or within a folderΓöé
  204. Γöé            Γöé                Γöéor container when the object'sΓöé
  205. Γöé            Γöé                Γöélocation is not the desktop.  Γöé
  206. Γöé            Γöé                Γöéx,y is relative to the lower  Γöé
  207. Γöé            Γöé                Γöéleft-hand corner and          Γöé
  208. Γöé            Γöé                Γöérepresents percentages of the Γöé
  209. Γöé            Γöé                Γöéfull width and height.        Γöé
  210. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  211. ΓöéOBJECTID    Γöé=<name>;        ΓöéThis is an identity unique    Γöé
  212. Γöé            Γöé                Γöéwithin the system that will   Γöé
  213. Γöé            Γöé                Γöéstay with the object even if  Γöé
  214. Γöé            Γöé                Γöéit is moved or renamed as to  Γöé
  215. Γöé            Γöé                Γöéfile name or title.  The angleΓöé
  216. Γöé            Γöé                Γöébrackets are part of the id   Γöé
  217. Γöé            Γöé                Γöéstring.                       Γöé
  218. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  219. ΓöéNORENAME    Γöé=YES;           ΓöéThis object cannot be renamed.Γöé
  220. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  221. Γöé            Γöé=NO;            ΓöéThis object can be renamed.   Γöé
  222. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  223. ΓöéNODRAG      Γöé=YES;           ΓöéThis object cannot be dragged.Γöé
  224. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  225. Γöé            Γöé=NO;            ΓöéThis object can be dragged.   Γöé
  226. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  227. ΓöéNODROP      Γöé=YES;           ΓöéThis object cannot accept     Γöé
  228. Γöé            Γöé                Γöédropped objects.              Γöé
  229. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  230. Γöé            Γöé=NO;            ΓöéThis object can accept droppedΓöé
  231. Γöé            Γöé                Γöéobjects.                      Γöé
  232. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  233. ΓöéHIDEBUTTON  Γöé=YES;           ΓöéViews of this object will haveΓöé
  234. Γöé            Γöé                Γöéa hide button.                Γöé
  235. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  236. Γöé            Γöé=NO;            ΓöéViews of this object will haveΓöé
  237. Γöé            Γöé                Γöéa minimize button instead.    Γöé
  238. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  239. ΓöéMINWIN      Γöé=HIDE;          ΓöéViews of this object will hideΓöé
  240. Γöé            Γöé                Γöéwhen the minimize button is   Γöé
  241. Γöé            Γöé                Γöéselected.                     Γöé
  242. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  243. Γöé            Γöé=VIEWER;        ΓöéViews of this object will     Γöé
  244. Γöé            Γöé                Γöéminimize to the viewer.       Γöé
  245. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  246. Γöé            Γöé=DESKTOP;       ΓöéViews of this object will     Γöé
  247. Γöé            Γöé                Γöéminimize to the desktop.  An  Γöé
  248. Γöé            Γöé                Γöéicon appears on the "landing  Γöé
  249. Γöé            Γöé                Γöéarea" at the lower left of theΓöé
  250. Γöé            Γöé                Γöédesktop.                      Γöé
  251. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  252. ΓöéCCVIEW      Γöé=YES;           ΓöéCreate a new view of this     Γöé
  253. Γöé            Γöé                Γöéobject when the user selects  Γöé
  254. Γöé            Γöé                Γöéopen, to provide concurrent   Γöé
  255. Γöé            Γöé                Γöéviews.                        Γöé
  256. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  257. Γöé            Γöé=NO;            ΓöéSwitch focus to the open view Γöé
  258. Γöé            Γöé                Γöéof this object when the user  Γöé
  259. Γöé            Γöé                Γöéselects open.                 Γöé
  260. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  261. ΓöéOPEN        Γöé=SETTINGS;      ΓöéOpen a settings view when     Γöé
  262. Γöé            Γöé                Γöéobject is created.            Γöé
  263. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  264. Γöé            Γöé=DEFAULT;       ΓöéOpen the default view when theΓöé
  265. Γöé            Γöé                Γöéobject is created. This can beΓöé
  266. Γöé            Γöé                Γöéused to create and launch     Γöé
  267. Γöé            Γöé                ΓöéWPProgram objects.            Γöé
  268. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  269. Figure 11.  Keyname/Value Pairs for the WPObject Class 
  270.  
  271.  
  272. ΓòÉΓòÉΓòÉ <hidden> Figure 12:  WPFolder Keyname/Value pairs ΓòÉΓòÉΓòÉ
  273.  
  274. Figure 12.  Keyname/Value Pairs for the WPFolder Class 
  275.  
  276. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  277. ΓöéKeyname     ΓöéValue           ΓöéDescription                   Γöé
  278. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  279. ΓöéOPEN        Γöé=ICON;          ΓöéOpen the icon view            Γöé
  280. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  281. Γöé            Γöé=TREE;          ΓöéOpen tree view                Γöé
  282. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  283. Γöé            Γöé=DETAILS;       ΓöéOpen details view             Γöé
  284. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  285. ΓöéICONVIEW    Γöé=s1,[s2,...sn]; ΓöéSpecify styles for icon view  Γöé
  286. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  287. ΓöéTREEVIEW    Γöé=s1,[s2,...sn]; ΓöéSpecify styles for tree view  Γöé
  288. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  289. ΓöéDETAILSVIEW Γöé=s1,[s2,...sn]; ΓöéSpecify styles for details    Γöé
  290. Γöé            Γöé                Γöéview                          Γöé
  291. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  292. Γöé*VIEW stylesΓöé=FLOWED         ΓöéDisplay using regular columns Γöé
  293. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  294. Γöé            Γöé=NONFLOWED      ΓöéDisplay using regular grid,   Γöé
  295. Γöé            Γöé                Γöénot flowed columns            Γöé
  296. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  297. Γöé            Γöé=NONGRID        ΓöéDisplay using no grid or      Γöé
  298. Γöé            Γöé                Γöécolumns columns.  Icons are   Γöé
  299. Γöé            Γöé                Γöéspaced irregularly.           Γöé
  300. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  301. Γöé            Γöé=NORMAL         ΓöéUse normal-size icons         Γöé
  302. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  303. Γöé            Γöé=MINI           ΓöéUse small icons               Γöé
  304. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  305. Γöé            Γöé=LINES          ΓöéLines in tree view            Γöé
  306. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  307. Γöé            Γöé=NOLINES        ΓöéNo lines in tree view.        Γöé
  308. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  309. ΓöéBACKGROUND  Γöé=filename;      ΓöéBitmap for folder background, Γöé
  310. Γöé            Γöé                Γöéa filename in \OS2\BITMAP.    Γöé
  311. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  312. ΓöéICONFONT    Γöé=size.name;     ΓöéFont for icon names such as   Γöé
  313. Γöé            Γöé                Γöé10.Helvetica                  Γöé
  314. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  315. ΓöéTREEFONT    Γöé=size.name;     ΓöéFont for tree icon names      Γöé
  316. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  317. ΓöéDETAILSFONT Γöé=size.name;     ΓöéFont for Details view text    Γöé
  318. Γöé            Γöé                Γöédisplay                       Γöé
  319. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  320. ΓöéWORKAREA    Γöé=YES;           ΓöéThis folder is a workarea; if Γöé
  321. Γöé            Γöé                Γöéis now open, it will be       Γöé
  322. Γöé            Γöé                Γöéreopened at the next boot.    Γöé
  323. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  324. Γöé            Γöé=NO;            ΓöéFolder is not a workarea.     Γöé
  325. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  326. ΓöéICONVIEWPOS Γöé=x1,y1,x2,y2;   ΓöéSet the initial icon view     Γöé
  327. Γöé            Γöé                Γöéposition and the size of this Γöé
  328. Γöé            Γöé                Γöéfolder on the desktop.        Γöé
  329. Γöé            Γöé                ΓöéCoordinates are percentages ofΓöé
  330. Γöé            Γöé                Γöéoffset of the whole screen    Γöé
  331. Γöé            Γöé                Γöéfrom the lower left hand      Γöé
  332. Γöé            Γöé                Γöécorner.  x1 sets left side    Γöé
  333. Γöé            Γöé                Γöéposition, x2 right, etc.      Γöé
  334. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  335. ΓöéICONPOS     Γöé=x1,y1;         ΓöéPosition this icon on the     Γöé
  336. Γöé            Γöé                Γöédesktop.                      Γöé
  337. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  338. Figure 12.  Keyname/Value Pairs for the WPFolder Class 
  339.  
  340.  
  341. ΓòÉΓòÉΓòÉ <hidden> Figure 13:  WPProgram Keyname/Value Pairs ΓòÉΓòÉΓòÉ
  342.  
  343. Figure 13.  Keyname/Value Pairs for the WPProgram Class 
  344.  
  345. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  346. ΓöéKeyname     ΓöéValue (Note 1)  ΓöéDescription                   Γöé
  347. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  348. ΓöéASSOCFILTER Γöé=filterslist;   ΓöéSets the filename filter for  Γöé
  349. Γöé            Γöé                Γöéfiles associated with this    Γöé
  350. Γöé            Γöé                Γöéprogram.  Multiple values are Γöé
  351. Γöé            Γöé                Γöéseparated by commas.          Γöé
  352. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  353. ΓöéASSOCTYPE   Γöé=typelist;      ΓöéSets the type of files        Γöé
  354. Γöé            Γöé                Γöéassociated with this program. Γöé
  355. Γöé            Γöé                ΓöéMultiple values are separated Γöé
  356. Γöé            Γöé                Γöéby commas.                    Γöé
  357. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  358. ΓöéEXENAME     Γöé=filespec;      ΓöéName of program file, or fullyΓöé
  359. Γöé            Γöé                Γöéqualified filespec.  This may Γöé
  360. Γöé            Γöé                Γöébe "*" for command processors Γöé
  361. Γöé            Γöé                Γöéfor OS/2, DOS, or WINOS2.     Γöé
  362. Γöé            Γöé                ΓöéPROGTYPE is required when "*" Γöé
  363. Γöé            Γöé                Γöéis used.                      Γöé
  364. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  365. ΓöéNOAUTOCLOSE Γöé=YES;           ΓöéLeaves the window open upon   Γöé
  366. Γöé            Γöé                Γöéprogram termination.          Γöé
  367. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  368. Γöé            Γöé=NO;            ΓöéCloses the window upon programΓöé
  369. Γöé            Γöé                Γöétermination.                  Γöé
  370. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  371. ΓöéPARAMETERS  Γöé=params;        ΓöéSets the parameters list,     Γöé
  372. Γöé            Γöé                Γöéwhich may include substitutionΓöé
  373. Γöé            Γöé                Γöéstrings.  The parameters are  Γöé
  374. Γöé            Γöé                Γöéincluded as the command line  Γöé
  375. Γöé            Γöé                Γöépassed to the target program. Γöé
  376. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  377. ΓöéPROGTYPE    Γöé=PM;            ΓöéPresentation Manager session  Γöé
  378. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  379. Γöé            Γöé=FULLSCREEN;    ΓöéOS/2 full-screen              Γöé
  380. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  381. Γöé            Γöé=WINDOWABLEVIO; ΓöéOS/2 window                   Γöé
  382. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  383. Γöé            Γöé=VDM;           ΓöéDOS full-screen               Γöé
  384. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  385. Γöé            Γöé=WINDOWEDVDM;   ΓöéDOS window                    Γöé
  386. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  387. Γöé            Γöé=WIN;           ΓöéWINOS2 full-screen            Γöé
  388. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  389. Γöé            Γöé=WINDOWEDWIN;   ΓöéWINOS2 window, common session Γöé
  390. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  391. Γöé            Γöé=SEPARATEWIN;   ΓöéWINOS2 window, separate       Γöé
  392. Γöé            Γöé                Γöésession                       Γöé
  393. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  394. Γöé(OS/2 2.1)  Γöé=PROG_31_STD;   ΓöéWINOS2 full screen, Win 3.1   Γöé
  395. Γöé(See note)  Γöé                Γöéstandard mode                 Γöé
  396. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  397. Γöé            Γöé=PROG_31_STD    ΓöéWINOS2 window, separate VDM,  Γöé
  398. Γöé            ΓöéSEAMLESSVDM;    ΓöéWin 3.1 standard mode         Γöé
  399. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  400. Γöé            Γöé=PROG_31_STD    ΓöéWINOS2 window, common session,Γöé
  401. Γöé            ΓöéSEAMLESSCOMMON; ΓöéWin 3.1 standard mode         Γöé
  402. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  403. Γöé            Γöé=PROG_31_ENH;   ΓöéWINOS2 full screen, common    Γöé
  404. Γöé            Γöé                Γöésession, Win 3.1 enhanced modeΓöé
  405. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  406. Γöé            Γöé=PROG_31_ENH    ΓöéWINOS2 window, separate VDM,  Γöé
  407. Γöé            ΓöéSEAMLESSVDM;    ΓöéWin 3.1 enhanced mode         Γöé
  408. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  409. Γöé            Γöé=PROG_31_ENH    ΓöéWINOS2 window, common session,Γöé
  410. Γöé            ΓöéSEAMLESSCOMMON; ΓöéWin 3.1 enhanced mode         Γöé
  411. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  412. ΓöéSET (See    ΓöéXXX=VVV;        ΓöéSet environment variable XXX  Γöé
  413. Γöénote)       Γöé                Γöéto a value.  This is also usedΓöé
  414. Γöé            Γöé                Γöéto set DOS settings for DOS   Γöé
  415. Γöé            Γöé                Γöéand WINOS2 programs.          Γöé
  416. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  417. ΓöéSTARTUPDIR  Γöé=path;          ΓöéSets the working directory    Γöé
  418. Γöé(See note)  Γöé                Γöé                              Γöé
  419. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  420. Figure 13.  Keyname/Value Pairs for the WPProgram Class 
  421.  
  422.  
  423. ΓòÉΓòÉΓòÉ 2. Launching Mechanisms ΓòÉΓòÉΓòÉ
  424.  
  425. The OS/2 desktop provides a Graphical User Interface (GUI) way to launch 
  426. applications.  A user opens an application simply by double-clicking the mouse 
  427. on an icon associated with an executable.  (In this article, this method of 
  428. launching applications is called icon selection.) What lies behind the desktop 
  429. icon matters little to the user, who cares only that the application starts and 
  430. runs correctly. 
  431.  
  432. In the Settings notebook for each program object of class WPProgram in the 
  433. Workplace Shell, there is a Program tab page. On this page, the path and 
  434. filespec entry-field value can be an executable file (with an .EXE extension) 
  435. or batch file (.CMD or .BAT extension).  The value for path and filespec may be 
  436. just "*", denoting the default command processor for that type of session. 
  437.  
  438. The Settings notebook presents the object's definition as a number of pages 
  439. with tabs.  Each page contains a group of related parameters.  The Settings 
  440. notebook's Program page contains the path and filename of the program, any 
  441. program parameters, and the directory to assign as the current directory. 
  442.  
  443. Internally, the path and filename string in a program object's Settings 
  444. notebook is called an EXENAME setup string. 
  445.  
  446. Regardless of the EXENAME in the Settings notebook, the components of the 
  447. launching mechanism can be tailored to present the same appearance to the user 
  448. who does icon selection.  Why tailor the launching mechanism? It is easier for 
  449. everyone if the application designer sets up an icon on the desktop for the 
  450. user to select, instead of telling the user to "Open a DOS command-prompt 
  451. window by selecting ..." and then "Issue the command ...".  If the application 
  452. designer has done the packaging work well, then the user simply selects the 
  453. icon, and the possibly complex processing mechanisms launch the application. 
  454.  
  455. The most common type of launching mechanism is the one in which the path and 
  456. filename in the Settings notebook point to the executable that is launched. 
  457. Let's call this a direct launch.  In contrast, an indirect launch uses REXX 
  458. programs and other methods. Later, this article shows how REXX can extend the 
  459. functionality of a WPProgram object on the desktop. 
  460.  
  461. There is another way to start programs: invoke them from the command line in a 
  462. DOS or OS/2 window.  This article does not discuss the command-line method, 
  463. except in situations where a command is issued as part of a launch mechanism 
  464. that is based on icon selection. 
  465.  
  466. Whether the direct or indirect launch mechanism is used, the user who uses icon 
  467. selection should see no functional difference in the way that the program is 
  468. started.  As long as the application starts in the same way, all methods of 
  469. defining and launching the application are equivalent.  This should satisfy the 
  470. goal of most users, which is to define objects on the desktop in such a way 
  471. that simple icon selection launches them and their processing appears similar. 
  472.  
  473. For example, opening folders or containers is clearly related to launching 
  474. applications - the required association of data files with the executable has 
  475. been defined, and the desktop user launches the application by selecting a data 
  476. file, or by dragging-and-dropping a data file onto an application program's 
  477. icon. 
  478.  
  479.  
  480. ΓòÉΓòÉΓòÉ 2.1. Direct Launch ΓòÉΓòÉΓòÉ
  481.  
  482. For objects of class WPProgram that have an EXENAME filename extension of .EXE, 
  483. WPS starts the launch process by examining the type of executable - OS/2, DOS, 
  484. or Windows.  In addition, the session can be windowed, full-screen, or PM. 
  485. Windows sessions, invoked through WINOS2, can also use different Windows run 
  486. modes, either Standard or Enhanced 3.1. 
  487.  
  488. The launch process for an executable object consists of these general steps: 
  489.  
  490.  o  Start a process to control the executable 
  491.  
  492.  o  It sets up the executable environment 
  493.  
  494.  o  It loads the target executable 
  495.  
  496.  o  It passes control to the executable 
  497.  
  498.  o  Which runs within its execution environment 
  499.  
  500.  o  Which terminates after running 
  501.  
  502.  o  The control process cleans up the environment 
  503.  
  504.  o  The control process terminates 
  505.  
  506.  These steps do not account for the technical details that differ for each type 
  507.  of executable environment, but rather they try to show the functions performed 
  508.  that are common to all types of executables.  The steps outlined can be mapped 
  509.  onto several different operating systems, including IBM MVS for mainframe 
  510.  systems. 
  511.  
  512.  The first and last steps above are accomplished by mechanisms in the operating 
  513.  system (OS), which is the overall control process for the computer system. 
  514.  The OS cleans up resources after the application control process terminates. 
  515.  
  516.  The command processor that is the control process depends on which type of 
  517.  session is being started.  You can start a Windows application from an OS/2 
  518.  command prompt window or full-screen by issuing a command such as: 
  519.  
  520.      winos2 appname
  521.  where appname is the program name of the Windows application to be run when 
  522.  WINOS2 starts a Windows session. 
  523.  
  524.  Figure  2 shows the default command processors used to control each type of 
  525.  session. 
  526.  
  527.  
  528. ΓòÉΓòÉΓòÉ 2.1.1. Program Parameters ΓòÉΓòÉΓòÉ
  529.  
  530. In the Settings notebook's Program tab page, the Parameters value for a 
  531. WPProgram object can be set either to accept data input by the user in response 
  532. to a prompt, or to accept data from a drag-and-drop operation in which a data 
  533. file is dropped onto the icon of the WPProgram object. 
  534.  
  535. A Parameters value that has matched square brackets surrounding a prompt string 
  536. will prompt the user for keyboard input.  For example, if the string [Enter 
  537. filespec] is in the Parameters entry field, the desktop displays a dialog box 
  538. in which the prompt string appears, followed by a data-entry field into which 
  539. the user types data.  (Had the user instead launched a program from a 
  540. command-line prompt, the user could also have supplied the data immediately 
  541. after typing the program's name.) 
  542.  
  543.  
  544. ΓòÉΓòÉΓòÉ 2.1.2. Special Parameters ΓòÉΓòÉΓòÉ
  545.  
  546. Figure  3 shows some special string components that go into the Parameters 
  547. entry field of the WPProgram object.  These components are used to insert 
  548. varying information (given in Figure 3) about the path, filename, and extension 
  549. into the command line that invokes the target program.  These string components 
  550. are useful for drag-and-drop operations, because they provide the target 
  551. program with values that have been prepared and parsed by the operating system. 
  552.  
  553. For example, consider this Parameters string: 
  554.  
  555.    %*  %**P  %**N  %**E
  556.  
  557. This Parameters string, when used with a drag-and-drop operation, results in a 
  558. command line that contains: 
  559.  
  560.  o  the fully qualified filespec (drive, path, filename, extension), from the 
  561.    %* string 
  562.  
  563.  o  the path with last backslash, from the %**P string 
  564.  
  565.  o  the filename with no extension, from the %**N string 
  566.  
  567.  o  the extension, from the %**E string 
  568.  
  569.  This Parameters string makes the operating system do some of the work, 
  570.  breaking out the parts of a filespec before the application program looks at 
  571.  the command-line operands. 
  572.  
  573.  Parsing a filespec can be complex when HPFS is used and the user constructs 
  574.  directory names or filenames that include spaces.  A simple technique for 
  575.  handling HPFS names is to construct a Parameters string similar to the one 
  576.  shown above, along with additional special characters used as punctuation. 
  577.  Using such a Parameters string, the resulting command-line operands can be 
  578.  parsed successfully by REXX or by an application program.  Here is an example 
  579.  of such a Parameters string: 
  580.  
  581.      (%*) (%**P) (%**N) (%**E)
  582.  
  583.  Let's put this string into action.  Consider what happens when a user drops a 
  584.  file named "A file name!.xtx" contained in a directory "A Dir Name" onto a 
  585.  program object that has the above Parameters string.  The resulting command 
  586.  line contains: 
  587.  
  588.   (c:\A Dir Name\A file name!.xtx) (c:\A Dir Name\) (A file name!) (xtx)
  589.  
  590.  An application program or REXX can parse this command line by using the 
  591.  punctuation added around the special strings. 
  592.  
  593.  
  594. ΓòÉΓòÉΓòÉ 2.2. Indirect Launch ΓòÉΓòÉΓòÉ
  595.  
  596. The indirect launch method can be described as using a "helper" mechanism to 
  597. configure the execution environment before starting the target application.  In 
  598. cases where the target executable requires special handling or environment 
  599. values that are not in effect for the OS/2 system as a whole, the required 
  600. environment can be configured using .CMD files or REXX programs.  The same is 
  601. true for DOS applications, where a special .BAT file or AUTOEXEC.BAT that is 
  602. tailored for the target DOS application can run first to configure its special 
  603. environment. 
  604.  
  605. The indirect launch method using command files or REXX programs can run 
  606. applications (programs, REXX programs, or command files) in either a sequential 
  607. or parallel manner. 
  608.  
  609. If the batch file or REXX program running in an OS/2 session invokes the target 
  610. program by specifying only its name on a command line, then the target 
  611. application runs while the invoking batch file is blocked, awaiting termination 
  612. of the target program.  This is called sequential execution of the invoked 
  613. application. 
  614.  
  615. If, however, the batch file invokes the target program using the START command, 
  616. then the target program will run in parallel with the batch file.  This 
  617. important concept is covered later in the section "PMSW - PM Switch Desktop 
  618. Focus". 
  619.  
  620. In OS/2 2.1, the DOS Settings notebook supports use of an AUTOEXEC.BAT file or 
  621. another batch file in the DOS_AUTOEXEC session settings. Although the file can 
  622. have any name, AUTOEXEC.BAT is used throughout this article. 
  623.  
  624. The indirect launch category includes the use of an AUTOEXEC.BAT file because a 
  625. special AUTOEXEC.BAT is used to tailor the runtime environment.  The command 
  626. processor establishes the DOS session environment, and then launches either the 
  627. batch file specified by DOS_AUTOEXEC or the default AUTOEXEC.BAT before 
  628. launching the target DOS executable.  The AUTOEXEC.BAT can also launch the 
  629. target DOS application by invoking it as a command or via the CALL command to 
  630. another .BAT file. 
  631.  
  632. In the case where AUTOEXEC.BAT invokes the target application, the Settings 
  633. notebook's path and filename entry contains "*", meaning the DOS command 
  634. processor.  The AUTOEXEC.BAT file contains a command line that invokes the 
  635. target application, and then the EXIT command for closing the command 
  636. processor's window.  Both the AUTOEXEC.BAT and the notebook's path and filename 
  637. entry can invoke programs or batch files, which means that more than one 
  638. process can be run, sequentially. 
  639.  
  640. Execution environment requirements for some applications can include: 
  641.  
  642.  o  Extending or changing the default PATH value 
  643.  
  644.  o  Changing the DPATH value (in OS/2 applications) 
  645.  
  646.  o  Running several command, REXX, or program files 
  647.  
  648.  o  Conditional execution of programs 
  649.  
  650.  o  Coordinated execution of applications 
  651.  
  652.  The most sophisticated and powerful method of indirectly launching an 
  653.  application is to create a program object using System Object Model (SOM) 
  654.  methods, and to launch it during object creation by specifying OPEN=DEFAULT; 
  655.  in the WinCreateObject setup string.  The current REXXUTIL function package in 
  656.  REXX provides the SysCreateObject function to create objects of all types for 
  657.  the desktop or for desktop folders.  See the later section "Setup Strings for 
  658.  Programs" for details about the values in object setup strings. 
  659.  
  660.  One of the advantages of creating an object for launching applications is that 
  661.  the object can be left visible on the desktop and can appear to be an ordinary 
  662.  application.  The mechanisms used internally to launch and control the target 
  663.  application can be hidden from the user, who need not be concerned with those 
  664.  mechanisms (The internal mechanisms are discussed later in detail.)  The 
  665.  object created for launching may also be hidden easily by using the location 
  666.  <WP_NOWHERE>, which is the OBJECTID of the \NOWHERE folder, as shown in Figure 
  667.  15. Figure 15 contains a REXX program that creates an object for immediate 
  668.  launch, and then hides that object by specifying the location <WP_NOWHERE>. 
  669.  Note that you can also create any object as invisible by including the 
  670.  NOTVISIBLE=YES; string in the object's setup. See Figure 11 for details. 
  671.  
  672.  When creating a program object to launch an application, the launch method can 
  673.  be either direct or indirect.  An example of a REXX program that creates an 
  674.  object to launch an application is covered in the next section. 
  675.  
  676.  Using REXX programs to create objects provides the ability to query the 
  677.  current operating system environment, attached LAN network resources, and so 
  678.  on.  Some of the advantages in using REXX in this manner are: 
  679.  
  680.  o  Setup can be changed dynamically 
  681.  
  682.  o  Internal launch mechanisms can be changed 
  683.  
  684.  o  Objects can be hidden easily 
  685.  
  686.  o  Objects can start different types of sessions 
  687.  
  688.  o  Objects can be displayed on the desktop or in folders 
  689.  
  690.  
  691. ΓòÉΓòÉΓòÉ 2.2.1. Sample SysCreateObject Launch ΓòÉΓòÉΓòÉ
  692.  
  693. Figure 15 lists a REXX program for creating an invisible object and launching 
  694. it upon creation.  This program uses PMSW to switch focus to the session if it 
  695. is already active. 
  696.  
  697. To make this object visible on the desktop, change the Location value in Figure 
  698. 15 from <WP_NOWHERE> to <WP_DESKTOP>.  The location also may be any folder for 
  699. which you can identify the OBJECTID, or a path such as C:\DESKTOP. 
  700.  
  701. If you make the created object visible, then you don't need to run this REXX 
  702. program to launch it.  Instead, just select the icon (the visible object) to 
  703. open an OS/2 command-prompt window, maximized.  To open a new windowed command 
  704. prompt each time you select an icon, change to CCVIEW=YES; in the setup. 
  705.  
  706.  
  707. ΓòÉΓòÉΓòÉ 2.2.2. Sample DOS Object Launch ΓòÉΓòÉΓòÉ
  708.  
  709. The REXX program in Figure 16 creates an object on the desktop that runs DOS 
  710. QBASIC in a maximized DOS window. 
  711.  
  712. This REXX program creates a visible object that you can launch by icon 
  713. selection.  Using this approach, you can use the graphic mouse cursor to 
  714. navigate within this DOS application. 
  715.  
  716. Once you run this REXX program, you don't need to run it again, although you 
  717. can re-run it to recreate the object on the desktop if you previously dragged 
  718. it to the shredder.  You can use this REXX program to try new things, such as 
  719. making the object undraggable. 
  720.  
  721.  
  722. ΓòÉΓòÉΓòÉ 2.3. Launch by Association ΓòÉΓòÉΓòÉ
  723.  
  724. An application can be defined to the OS/2 Workplace Shell by using the Settings 
  725. notebook's Type and Association pages.  These techniques require defining data 
  726. in the Settings notebook for either the application program or for data files 
  727. to be used with the program.  When the association of data files with a program 
  728. is done correctly, the user can invoke the target program to operate on a 
  729. particular data file.  To do this, the user selects the icon of the data file 
  730. that is displayed in an open container view. 
  731.  
  732. There are three ways to set up a data-file object so that a program is started 
  733. when the user selects the data file's icon.  These methods require updates to 
  734. the Settings notebook for either the application program or for individual data 
  735. files.  The updates can be done manually or by a program.  These methods are: 
  736.  
  737.  o  Create a filename association in the application program's Settings 
  738.    notebook (as shown in Figure  4). 
  739.  
  740.  o  Create a type association in the data file's Settings notebook (Figure  5). 
  741.  
  742.  o  Make the program name the default setting in the "Open" cascade menu in the 
  743.    data file's Settings notebook (Figure  6). 
  744.  
  745.  An association is a special link that can be assigned to a program object. 
  746.  This link allows the user to specify which program will be invoked when the 
  747.  user double-clicks on specified types of files, individual files, or files 
  748.  described by a global filename mask. 
  749.  
  750.  
  751. ΓòÉΓòÉΓòÉ 2.3.1. Filename Association in a Program ΓòÉΓòÉΓòÉ
  752.  
  753. Creating a filename association in a program's Settings notebook requires that 
  754. parts of filenames remain constant, so that data files can be associated with 
  755. the program.  Most associations reserve a file's extension, although the part 
  756. of a filename that must remain constant does not have to be its extension. 
  757. This reservation of part of a filename is not very flexible, and associations 
  758. can be destroyed accidentally by changing the data file's filename or 
  759. extension.  This method supports the use of HPFS long names. 
  760.  
  761. To create an association between a program and data files, open the Association 
  762. page in the program object's Settings notebook.  Enter the filename mask or 
  763. filename extension in the New Name entry field, and select the Add pushbutton 
  764. to define the association.  The "?" and "*" characters can be used in the 
  765. filename mask or in the extension. 
  766.  
  767. Figure  7 gives an example of setting an association based on part of a 
  768. filename and also a file extension. 
  769.  
  770. A text editor may, for example, have associations for plain-text files (that 
  771. is, a type of data file), the individual file CONFIG.SYS, and all files 
  772. described with the global name READ*.*.  Whenever a data-file object that meets 
  773. these criteria is selected with a double-click, OS/2 starts the appropriate 
  774. program object. 
  775.  
  776. The filename-association method is not very flexible.  When a user using icon 
  777. selection wants to use a different program with the data file, the existing 
  778. association must be changed.  This is usually too complicated for the average 
  779. user, and it involves too much manual work to be efficient. 
  780.  
  781.  
  782. ΓòÉΓòÉΓòÉ 2.3.2. Type Association in a Data File ΓòÉΓòÉΓòÉ
  783.  
  784. Creating a type association in a data file's Settings notebook is a better 
  785. approach.  The advantage of this approach is that it is easy for a user to use 
  786. a different program with the program object, simply by choosing a new type in 
  787. the Settings view.  The process for making a type association in a data file is 
  788. simple: 
  789.  
  790.  o  Open the Settings view for the data-file object 
  791.  
  792.  o  Select the Type page 
  793.  
  794.  o  Select from the list of available types 
  795.  
  796.  o  Press the Add button 
  797.  
  798.  o  Close the Settings window 
  799.  
  800.  Individual programs can be associated with a Type value, but support is 
  801.  limited, and usually only OS/2 programs support file-type association. 
  802.  Programs can also create new file types, and they can create the data-file 
  803.  associations during processing, to provide the GUI application launching for 
  804.  users. 
  805.  
  806.  Type association in data files is described in more detail in Presentation 
  807.  Manager & Workplace Shell Application Development andWorkplace Shell 
  808.  Implementation in the references. 
  809.  
  810.  
  811. ΓòÉΓòÉΓòÉ 2.3.3. Adding a Default Program to a Data File's Menu ΓòÉΓòÉΓòÉ
  812.  
  813. Adding a default program to a data file's menu should be undertaken only by 
  814. users who understand the workings of the Workplace Shell in some detail.  Its 
  815. main disadvantage is evident when many existing files must be set up to use a 
  816. particular program: each one must be modified separately. 
  817.  
  818. If you are setting up a system for a new user, you can create a data file with 
  819. a particular program identified as the default in "Open" in the context menu, 
  820. then make that file a template so that all new files subsequently created from 
  821. it will inherit this default attribute. 
  822.  
  823. To create new files from the template, drag the template with the mouse. 
  824. Dropping the template creates the new instance of the data file, with all of 
  825. its associations and context menu items intact. 
  826.  
  827. The PM and Workplace Shell Redbook contains detailed instructions for updating 
  828. an object's context menu. This is the menu that you display when you click 
  829. mouse button 2 (usually the button at the right) on the object's icon.  You can 
  830. add new menu actions, and you can define a new default action that is taken 
  831. when you select the Open option in the menu. 
  832.  
  833. Figure  8 shows how to add a new menu item to the notebook menu page, and 
  834. Figure  6 displays the pop-up menu that you see when you select Open, then 
  835. Settings, to define the new default menu action. 
  836.  
  837. Note that, for folders such as the desktop, you can add program objects as menu 
  838. items by following the procedure outlined below: 
  839.  
  840.   1. Open the settings notebook for a folder 
  841.  
  842.   2. Select the Menu tab 
  843.  
  844.   3. Drag-and-drop a program object onto the "Actions on Menu" entry box 
  845.  
  846.   4. Close the settings notebook 
  847.  
  848.  You will now see the new menu action line on the folder's system menu.  An 
  849.  easy way to get to an OS/2 command prompt window is to drag-and-drop the "OS/2 
  850.  Window" icon from the "Command Prompts" folder onto the settings notebook Menu 
  851.  "Actions on Menu" entry field for the desktop.  Now, when you open the desktop 
  852.  system menu, you can launch an OS/2 command prompt window by selecting that 
  853.  menu line, or by hitting the key defined as a hot key by the tilde prefix. 
  854.  
  855.  
  856. ΓòÉΓòÉΓòÉ <hidden> Hot Key in Menu ΓòÉΓòÉΓòÉ
  857.  
  858. When you open the context menu for the desktop, you will see that menu items 
  859. have underscores under some letters. Those letters are "hot keys" that can be 
  860. pressed to select that menu action. 
  861.  
  862. You can add hot keys to menu actions that you add by following the procedure 
  863. outlined below: 
  864.  
  865.   1. Open the context menu 
  866.  
  867.   2. Open the Settings notebook 
  868.  
  869.   3. Open the menu tab page 
  870.  
  871.   4. Highlight your added menu action in the "Actions on Menu" by one click of 
  872.      the primary mouse button (usually the left) 
  873.  
  874.   5. Open the settings for your menu action by clicking on the settings 
  875.      pushbutton 
  876.  
  877.   6. Insert a tilde (usually the key to the left of '1' (one) on the keyboard 
  878.      with the shift key pressed) immediately to the left of the character 
  879.      (letter, number or special character in the menu action name) you want to 
  880.      use as the hot key for your menu action. The letter you choose must be 
  881.      unique among the selections at that menu level. 
  882.  
  883.   7. Click on "OK" pushbutton to update the settings for your menu action. 
  884.  
  885.   8. Close the settings notebook. 
  886.  
  887.  Now when you open the context menu, you'll see your added menu action with the 
  888.  character you've marked displayed with an underscore. You can select that menu 
  889.  action by pressing that key. Let's say you've added an OS/2 command prompt as 
  890.  a menu action. You could change the menu action name to "OS/~2" to use "2" as 
  891.  the hot key, or "OS~/2" to use the "/" as the hot key.  The letters "O" and 
  892.  "S" are being used already by other menu actions. 
  893.  
  894.  
  895. ΓòÉΓòÉΓòÉ 3. Coordinating Applications ΓòÉΓòÉΓòÉ
  896.  
  897. The focus of this article thus far has been on methods of launching 
  898. applications.  It now switches focus to cover methods of coordinating 
  899. processing among applications.  The last part of the article covers methods of 
  900. customizing the desktop. 
  901.  
  902. Gross Methods of Task Coordination 
  903.  
  904. A batch file running in a DOS session can invoke programs or other batch files 
  905. sequentially only.  A batch file or REXX program running in an OS/2 session can 
  906. invoke other sessions either sequentially or in parallel, depending on the 
  907. command used to launch the invoked sessions. 
  908.  
  909. If an OS/2 CALL command is used to invoke a program, the invoked program will 
  910. execute while the OS/2 session that invoked it is blocked waiting for 
  911. completion of the program.  The abilities of the CALL method are limited, 
  912. however, and the invoked program runs with the global default processing 
  913. environment. 
  914.  
  915. It is often useful, and sometimes required, to use more powerful methods of 
  916. invoking programs.  These methods usually require use of the START command or 
  917. other launch mechanisms.  In turn, this introduces new problems of managing 
  918. events among the tasks that are now running in parallel. 
  919.  
  920. You can design a REXX program or a batch command file to launch other tasks 
  921. such as other REXX programs and to communicate in gross (rough) ways among the 
  922. tasks.  As an example, let's take a REXX program that starts other REXX 
  923. programs, and then waits (by looping) until all the programs have completed 
  924. before doing follow-on processing.  We could use REXX queues, but instead, 
  925. let's use the file system and existence of files as semaphores as a gross means 
  926. of communicating information. 
  927.  
  928. The REXX control program sets up the runtime environment by deleting a fixed 
  929. list of files from a fixed directory.  Next, it issues the START command for 
  930. several other REXX programs or DOS or OS/2 sessions.  Then it waits for a while 
  931. by using the SysSleep function in the REXXUTIL package. 
  932.  
  933. After it awakens, the REXX control program can use SysFileTree to build a list 
  934. of filenames to see whether the started sessions have completed yet.  As each 
  935. of the started sessions begins, it creates a file, whose name is fixed, which 
  936. indicates that the session is active now.  As each session ends, it deletes the 
  937. file it first created, then creates another file that indicates it has 
  938. completed.  The REXX control program looks for these files, and can thus tell 
  939. when each session terminates normally.  However, if one of the sessions 
  940. terminates abnormally, that situation may not be apparent to the REXX control 
  941. program. 
  942.  
  943. The above example is gross in its design, its interprocess communication, and 
  944. its exploitation of system services.  Proper use of REXX features can make this 
  945. simple example much finer.  If you want to create a task environment in which 
  946. parallel processes communicate quicker and more cleanly, you can use REXX 
  947. queues and named-pipe support. 
  948.  
  949. Using the operating system's file services, the LAN network namespace features, 
  950. or a mainframe system catalog to provide gross semaphores by simple existence 
  951. of files or other objects is a concept that is so general that it can be used 
  952. over a wide variety of operating systems. The generalization is called the 
  953. Loosely Interconnected Networked Data Applications (LINDA) concept. 
  954.  
  955. In LINDA systems, each application periodically looks within a namespace for 
  956. objects that it will work with, and each application places objects into a 
  957. namespace.  Other applications periodically do similar operations, and the 
  958. applications thus communicate data among themselves in a loose network with no 
  959. direct communication.  We use this namespace concept daily when we look up 
  960. someone in the phone book - a common namespace for people in a locality - or 
  961. call directory assistance to retrieve information from that namespace. 
  962.  
  963. Detailed information with sample REXX programs is given in the section "PMSW 
  964. Function & Command Line Syntax". 
  965.  
  966.  
  967. ΓòÉΓòÉΓòÉ 3.1. PMSW - PM SWitch Desktop Focus ΓòÉΓòÉΓòÉ
  968.  
  969. The PMSW program, used in REXX programs to communicate the existence of active 
  970. tasks by name, can be thought of as a type of LINDA application. The task that 
  971. was launched by icon selection or by START command is listed in the desktop's 
  972. Window List. PMSW is told to look in that list for a particular name, and it 
  973. then either switches desktop focus to that task or it returns a code indicating 
  974. whether the task is or is not active. 
  975.  
  976. This PMSW.EXE program or its REXX external function (PMSW2.DLL) can be used in 
  977. batch files or REXX programs that launch a target application in parallel 
  978. execution mode. To do this, the REXX program that uses PMSW.EXE or PMSW2.DLL 
  979. should either use the START command or launch a program object by creating or 
  980. updating it with the OPEN=DEFAULT; setup string.  In this article, only REXX 
  981. programs are discussed, because only REXX has the needed functionality to 
  982. exploit the PMSW program. 
  983.  
  984. When a batch file or REXX program issues a START command , the START command 
  985. starts another session that runs in parallel with the batch file or REXX 
  986. program that issued the START.  The launching REXX program continues to run, 
  987. and can do other processing after having launched the parallel process.  The 
  988. launched session appears in the desktop's Window List when it becomes active 
  989. and can receive the focus. 
  990.  
  991. PMSW gives a REXX program the ability to launch a session and then switch 
  992. active focus to that launched session, regardless of the current focus, and 
  993. regardless of whether the launching REXX program is in the foreground or 
  994. background. 
  995.  
  996. PMSW can be invoked from batch files or REXX programs running in foreground, 
  997. background, and minimized sessions, or in sessions launched by the START 
  998. command . PMSW can be invoked via the DETACH command to switch desktop focus to 
  999. another task even though it is a PM application.  A process started by DETACH 
  1000. cannot acquire the focus due to its lack of PM resources, since, by definition, 
  1001. DETACH starts a process that does not use keyboard or screen resources. 
  1002.  
  1003. PMSW provides the mechanism by which a "parent" REXX program can track the 
  1004. independent "child" process through the presence or absence of the child's task 
  1005. name in the desktop's Window List.  To be able to do this, the REXX program 
  1006. must know, in advance, the name of the child process.  A name can be given to 
  1007. the child task by using the START command . The started session can be named by 
  1008. coding the optional first operand within double-quotes.  PM programs started in 
  1009. this way may change their Window-List names by making an appropriate API 
  1010. function call. 
  1011.  
  1012. Using PMSW, a REXX program can check to see if a given task is active in the 
  1013. Window List and, if so, the program will wait by using the REXX SysSleep 
  1014. function, then check again after SysSleep.  The watching REXX program can then 
  1015. delay further processing until the watched task terminates, or do other 
  1016. processing in parallel while the watched task is still active.  A REXX program 
  1017. that uses PMSW to watch active tasks can do a list of tasks sequentially by 
  1018. starting a task, watching it until it completes, and then start the next task 
  1019. in a list.  Similarly, a REXX program that uses PMSW can launch a number of 
  1020. tasks in parallel, watch for the last one to complete, and then do something 
  1021. else, such as cleaning up anything left by any of the tasks. 
  1022.  
  1023.  
  1024. ΓòÉΓòÉΓòÉ 4. Desktop Customization ΓòÉΓòÉΓòÉ
  1025.  
  1026. The previous sections provide the framework for launching applications and for 
  1027. coordinating tasks that are launched.  Those preceding topics have laid the 
  1028. foundation for understanding all the different methods of desktop 
  1029. customization.  The following sections deal with desktop customization 
  1030. techniques and assume that you are now familiar with methods of launching 
  1031. applications and of coordinating tasks. 
  1032.  
  1033. The standard OS/2 2.1 installation processing creates an initial desktop during 
  1034. the last step of the installation process, when the system is booted.  A 
  1035. starter set of desktop folders and icons is constructed by the Workplace Shell 
  1036. during the first boot process.  The user sees these standard objects, as well 
  1037. as the OS/2 Tutorial, which is presented automatically. 
  1038.  
  1039. Users want icons on their desktop for the applications that they use the most. 
  1040. They can manipulate the desktop using the mouse to drag-and-drop, create 
  1041. shadows, etc.  If a company wants to distribute OS/2 2.1 and to create objects 
  1042. on the desktop or in folders for all users, it is usually convenient to do so 
  1043. during installation of OS/2 2.1.  The objects that a company creates during 
  1044. customization can either augment or replace the standard objects. 
  1045.  
  1046. Indeed, this is a topic of interest across the industry - how to mass-produce a 
  1047. desktop that has a set of applications already defined for users without going 
  1048. to a lot of trouble.  There are several ways to do this: 
  1049.  
  1050.  o  Use REXX SysCreateObject 
  1051.  
  1052.  o  Change the contents of the file \OS2\INSTALL\DATABASE.DAT 
  1053.  
  1054.  o  Use MAKEINI to update the base OS2.INI file, the user file that contains 
  1055.    definitions of objects. 
  1056.  
  1057.  Each of these ways is discussed in sections that follow, with some 
  1058.  recommendations as to when each method would be best.  This article does not 
  1059.  address issues of OS/2 installation such as changes to the CID response file 
  1060.  to select OS/2 components or alter the installation process. 
  1061.  
  1062.  
  1063. ΓòÉΓòÉΓòÉ 4.1. Saving the Desktop Customization ΓòÉΓòÉΓòÉ
  1064.  
  1065. Another hot topic for all users is how to save the desktop in anticipation of 
  1066. the day when the OS2.INI file gets destroyed. 
  1067.  
  1068. Users can press keys Alt+F1 at boot time to cause OS/2 to copy the files from 
  1069. \OS2\INSTALL to the \OS2 directory and to the root directory.  These files are 
  1070. CONFIG.SYS, OS2.INI, and OS2SYS.INI.  If you don't want to use the Alt+F1 
  1071. restore process, you can also boot from the installation disks, or from 
  1072. bootable OS/2 diskettes, to manually create backups of the critical files. 
  1073.  
  1074. One method of creating a backup copy of the critical files that can be restored 
  1075. easily is to include RUN commands in the CONFIG.SYS file. These RUN commands 
  1076. copy the OS2.INI and OS2SYS.INI files, and CONFIG.SYS itself, to the 
  1077. \OS2\INSTALL directory. 
  1078.  
  1079. Figure  9 illustrates this concept.  In Figure 9, the boot drive is assumed to 
  1080. be C:. 
  1081.  
  1082. This simple copying may cause problems.  If an error exists in the CONFIG.SYS 
  1083. file that causes failure of the Workplace Shell, the RUN command processing has 
  1084. already copied the bad CONFIG.SYS file into the backup directory, so you won't 
  1085. be able to recover using Alt+F1. 
  1086.  
  1087. A better way would be to copy the files during boot to another directory, say 
  1088. \OS2\BACKUP, and then periodically to manually copy the critical files from 
  1089. \OS2\BACKUP to \OS2\INSTALL.  This staging of the backup files avoids 
  1090. overlaying the files in the \OS2\INSTALL directory each time you boot. 
  1091.  
  1092. If you have sufficient hard-disk space, you can copy the critical files to the 
  1093. \OS2\BACKUP directory and then run a batch file from STARTUP.CMD to do the 
  1094. following process: 
  1095.  
  1096.   1.  Erase file xxx.003 
  1097.  
  1098.   2.  Rename file xxx.002 to xxx.003 
  1099.  
  1100.   3.  Rename file xxx.001 to xxx.002 
  1101.  
  1102.   4.  Rename file CONFIG.SYS to CONFIG.001 
  1103.  
  1104.   5.  Rename file OS2.INI to OS2.001 
  1105.  
  1106.   6.  Rename file OS2SYS.INI to OS2SYS.001 
  1107.  
  1108.      This process can be modified further to automate the copy of files to 
  1109.      \OS2\INSTALL by copying the xxx.003 version (or whatever is highest, 
  1110.      oldest-numbered version) to the \OS2\INSTALL directory with renaming: 
  1111.  
  1112.   7.  COPY \OS2\BACKUP\CONFIG.003 \OS2\INSTALL\CONFIG.SYS 
  1113.  
  1114.   8.  COPY \OS2\BACKUP\OS2.003   \OS2\INSTALL\OS2.INI 
  1115.  
  1116.   9.  COPY \OS2\BACKUP\OS2SYS.003 \OS2\INSTALL\OS2SYS.INI 
  1117.  
  1118.  This modification "buffers" the overlaying of the files that would be restored 
  1119.  using Alt+F1 processing during boot. 
  1120.  
  1121.  
  1122. ΓòÉΓòÉΓòÉ 4.2. Using REXX SysCreateObject ΓòÉΓòÉΓòÉ
  1123.  
  1124. Using REXX with SysCreateObject calls to define folders and program objects to 
  1125. produce desktop customization is a generally useful, easy process.  This method 
  1126. consists of using REXX programs that call the SysCreateObject function to 
  1127. update the OS2.INI file. 
  1128.  
  1129. This method has only one prerequisite, the build of the initial desktop. It 
  1130. cannot be used prior to the build of the initial desktop; it is a 
  1131. post-installation method only. 
  1132.  
  1133. A REXX program that installs objects on the desktop can also create the 
  1134. required application directory and file structure.  The REXX program can 
  1135. include code that lets the user choose the drive and path for installation of 
  1136. the application; or, the target can be selected automatically based on 
  1137. available disk space; or, the target can be constant.  An alternative is to use 
  1138. a separate installation process, such as CID or NVDM/2, to install the 
  1139. directory structure and files, and then to define the desktop objects using 
  1140. REXX.  See the section  "SysCreateObject REXX Function" for the syntax and 
  1141. examples of this function. 
  1142.  
  1143. In the call to the function, you include the type of object, displayed title, 
  1144. location name, object setup string, and update or replace option.  For desktop 
  1145. customization, most of the objects are folders of class WPFolder, or 
  1146. application programs of class WPProgram. 
  1147.  
  1148. Among the object setup-string values, you should include a specific, unique 
  1149. OBJECTID value so that you can refer to the object in other REXX programs.  By 
  1150. giving a folder an OBJECTID name, you can open that folder automatically in a 
  1151. REXX program. 
  1152.  
  1153. OBJECTIDs can be used successfully to create and update objects only if the 
  1154. objects are not duplicated by using Workplace Shell functions. Consider the 
  1155. situation where you have created a folder with an OBJECTID, and program objects 
  1156. within that folder, with each program object having its own unique OBJECTID. 
  1157. Then, what happens when you COPY the folder? The program objects within the 
  1158. duplicate folder no longer have OBJECTIDs to which REXX programs can refer. 
  1159.  
  1160. Designers of desktop customization must be aware that the internal object 
  1161. "handle", assigned by the Workplace Shell when the object is created, is the 
  1162. only fixed, unique object identifier.  Since a REXX program can refer to 
  1163. objects only by OBJECTID or by a fully qualified path and filename, the 
  1164. changing of an OBJECTID by WPS processing represents a limitation on the 
  1165. ability of REXX programs to handle objects. 
  1166.  
  1167.  
  1168. ΓòÉΓòÉΓòÉ 4.3. Changing \OS2\INSTALL\DATABASE.DAT ΓòÉΓòÉΓòÉ
  1169.  
  1170. This method uses the MIGRATE.EXE application migration program in OS/2 to 
  1171. tailor the desktop during initial installation or at any later time when the 
  1172. user wants to manually run MIGRATE.  This method updates the OS2.INI file after 
  1173. it asks the user to select the programs to include in the migration process. 
  1174.  
  1175. The disadvantages of this method include the following: 
  1176.  
  1177.  o  The need to edit \OS2\INSTALL\DATABASE.TXT 
  1178.  
  1179.  o  Possible need to edit \OS2\INSTALL\DBTAGS.DAT 
  1180.  
  1181.  o  Much hands-on dialog work with MIGRATE.EXE 
  1182.  
  1183.  The prerequisite for this method is the existence of the directory and file 
  1184.  structure required by the application.  You must have already created the 
  1185.  directories and files by using a command file or REXX program, or else the 
  1186.  directories and files must be addressable on LAN resources. 
  1187.  
  1188.  This method starts with examining the DATABASE.TXT file to see if it already 
  1189.  contains the target application.  If not, then you must copy an existing entry 
  1190.  as a template for your new application. 
  1191.  
  1192.  Unless a new application defines new session parameters in its Settings 
  1193.  notebook, there is no need to edit the DBTAGS.DAT file.  In fact, the file 
  1194.  contains a warning not to edit it.  In most cases, editing this file has 
  1195.  little effect unless the associated CONFIG.SYS driver files have already been 
  1196.  loaded; these driver files contain the required resource names for the 
  1197.  settings parameters that will be added. 
  1198.  
  1199.  After you have edited the DATABASE.TXT file, you must update the DATABASE.DAT 
  1200.  file (which is used by MIGRATE.EXE) by running PARSEDB.EXE in the \OS2\INSTALL 
  1201.  directory.  After that, you must run MIGRATE.EXE to migrate any applications 
  1202.  you want to install as Windows, DOS, or OS/2 applications. 
  1203.  
  1204.  Running MIGRATE.EXE is an interactive process.  The program identifies 
  1205.  applications as candidates for migration by finding matches for the program 
  1206.  names in the DATABASE.DAT file.  It then presents you with a list of these 
  1207.  applications, and you can select which ones to migrate from the list 
  1208.  displayed.  The visible result of the migration process is one or two folders 
  1209.  on the desktop containing program objects for OS/2 and Windows applications. 
  1210.  
  1211.  Because of the involved processing required, and because of the manual 
  1212.  operations required, this approach to customization is not the easiest. From 
  1213.  the viewpoint of the system administrator, it also presents problems in 
  1214.  controlling the overall process. 
  1215.  
  1216.  
  1217. ΓòÉΓòÉΓòÉ 4.4. Using MAKEINI to Update the Base OS2.INI File ΓòÉΓòÉΓòÉ
  1218.  
  1219. This method uses MAKEINI.EXE to update the OS2.INI file.  In addition to 
  1220. creating new objects on the desktop, you can change system settings, such as 
  1221. date and time formats, to conform with local installation standards. 
  1222.  
  1223. This method of desktop customization can be done at both initial installation 
  1224. time and at any time thereafter. 
  1225.  
  1226. Prior to the first boot of the new OS/2 system, you can change the initial 
  1227. desktop by editing the INI.RC file, which is used to create the initial 
  1228. desktop.  (For some examples of editing the .RC file to change objects or to 
  1229. add objects during installation, see the section "Setup Strings in the .RC 
  1230. File".) After the first desktop is constructed, you can change the desktop by 
  1231. running MAKEINI.EXE with a USERNAME.RC file.  This merges the object 
  1232. definitions in the USERNAME.RC file with the existing OS2.INI file. 
  1233.  
  1234. There are sample .RC files in the \OS2 directory.  Their format and content are 
  1235. described later in the next section, "OS/2 .RC File Format". 
  1236.  
  1237. Distributing customized desktops during initial installation of OS/2 2.1 is 
  1238. easier than adding customization afterward using MAKEINI.EXE. Doing CID, LCU, 
  1239. or NVDM/2 remote installation of OS/2 2.1, you can use a user exit, which is 
  1240. invoked prior to the first boot, to insert new desktop objects into the INI.RC 
  1241. file or to delete unwanted lines. 
  1242.  
  1243. When installing OS/2 2.1 using CID, LCU, or NVDM/2, you can simplify the 
  1244. updates to INI.RC by extracting INI.RC from the CID directory structure.  Go to 
  1245. the \CID\IMG\OS2V21\DISK_9\REQUIRED bundle file, use the UNPACK program to 
  1246. extract the INI.RC file, edit INI.RC to add your desired customization, and 
  1247. then repack the updated INI.RC into the original bundle.  Details of this 
  1248. procedure are addressed in the NVDM/2 product documentation. 
  1249.  
  1250. Using MAKEINI and a USERNAME.RC file after the first boot is more difficult. 
  1251. The steps outlined below are one method: 
  1252.  
  1253.   1.  Boot using OS/2 installation diskettes or bootable OS/2 diskettes. 
  1254.  
  1255.   2.  Copy the OS2.INI file from the \OS2 directory to another directory for 
  1256.      backup and recovery use. 
  1257.  
  1258.   3.  Run MAKEINI, specifying your USERNAME.RC file as the first operand and 
  1259.      \OS2\OS2.INI as the second. 
  1260.  
  1261.   4.  Reboot OS/2 from the hard disk. 
  1262.  
  1263.  MAKEINI merges the results of the .RC file processing with the OS2.INI file. 
  1264.  The next boot of the system then completes the creation of objects as 
  1265.  specified in the USERNAME.RC file.  Recovery from errors requires rebooting 
  1266.  using diskettes and copying the backup copy of OS2.INI back to the \OS2 
  1267.  directory. 
  1268.  
  1269.  Refer to the Presentation Manager Reference for information about API calls 
  1270.  that affect the system and user profile files (usually, OS2SYS.INI and 
  1271.  OS2.INI). MAKEINI is documented in the OS/2 2.1 Command Reference. 
  1272.  
  1273.  
  1274. ΓòÉΓòÉΓòÉ 4.5. OS/2 .RC File Format ΓòÉΓòÉΓòÉ
  1275.  
  1276. Customizing the desktop using MAKEINI involves creating or changing a resource 
  1277. file such as the INI.RC file that creates the stock desktop. To make changes 
  1278. correctly to an .RC file, you need to understand the overall format of the .RC 
  1279. file, and how its individual entries are constructed. 
  1280.  
  1281. You can invoke the MAKEINI program manually (by running it at a command 
  1282. prompt), or you can code a program.  Using a program with the appropriate API 
  1283. calls, you can: 
  1284.  
  1285.   1.  Create a copy of the currently active OS2.INI file. 
  1286.  
  1287.   2.  Invoke MAKEINI to merge the new file-object data in USERNAME.RC with the 
  1288.      copy. 
  1289.  
  1290.   3.  Call the PrfReset API to change the name of the active user profile file 
  1291.      from OS2.INI to another name. 
  1292.  
  1293.  This technique requires PM programming expertise. 
  1294.  
  1295.  You can do similar processing by using a command prompt and issuing the 
  1296.  commands yourself.  The steps listed below assume you have included the 
  1297.  commands to copy the .INI files at boot time to the \OS2\BACKUP directory. 
  1298.  
  1299.   1.  COPY \OS2\INSTALL\OS2.INI \OS2\BACKUP\OS2.BAK 
  1300.  
  1301.   2.  COPY \OS2\BACKUP\OS2.INI \OS2\BACKUP\UPDATE.INI 
  1302.  
  1303.   3.  MAKEINI \OS2\BACKUP\USERNAME.RC \OS2\BACKUP\UPDATE.INI 
  1304.  
  1305.   4.  COPY \OS2\BACKUP\UPDATE.INI \OS2\INSTALL\OS2.INI 
  1306.  
  1307.   5.  reboot using Alt+F1 to activate the updated OS2.INI 
  1308.  
  1309.  If you want to restore the last active OS2.INI file, reboot using the 
  1310.  installation diskettes, then copy the backup copy from \OS2\BACKUP\OS2.BAK to 
  1311.  \OS2\OS2.INI and reboot normally. 
  1312.  
  1313.  When MAKEINI is run, it creates application names, keywords, and values in the 
  1314.  target output .INI file.  The entries created by MAKEINI are known as 
  1315.  STRINGTABLE entries.  When WPS initializes at the next system boot, it finds 
  1316.  these STRINGTABLE entries of names and values, and completes the process of 
  1317.  creating new objects by deleting the STRINGTABLE entries that were placed in 
  1318.  the .INI file by MAKEINI. 
  1319.  
  1320.  In editing the INI.RC file used to create the initial desktop, avoid changing 
  1321.  the required parts of the file.  All .RC files must begin with the CODEPAGE 
  1322.  and STRINGTABLE statements.  The list of blank values should remain as-is. 
  1323.  
  1324.  To change the default values for system parameters such as PM_National iDate 
  1325.  format, change the numeric value to correspond to the desired date format. 
  1326.  
  1327.  The STRINGTABLE entries have the general format of: 
  1328.  
  1329.      Application name, such as PM_ControlPanel
  1330.      Keyname, such as BorderWidth
  1331.      Value, such as 4
  1332.  
  1333.  This particular entry would appear as: 
  1334.  
  1335.      "PM_ControlPanel" "BorderWidth" "4"
  1336.  
  1337.  Adding new objects involves adding new STRINGTABLE lines with PM_InstallObject 
  1338.  as the application name, and a keyname string that consists of the following 
  1339.  parts separated by semi-colons: 
  1340.  
  1341.      Title of object
  1342.      WPS class of object
  1343.      Location of object
  1344.  
  1345.  The title of the object is what appears on the desktop under the icon for the 
  1346.  object.  The class of object is one of the WPS classes such as WPFolder or 
  1347.  WPProgram.  Objects are created in the order in which the entries appear in 
  1348.  the .RC file, so folders must be created before creating objects that go in 
  1349.  those folders.  The last part of each STRINGTABLE entry is the object setup 
  1350.  string containing keywords that describe the object, such as EXENAME, 
  1351.  PROGTYPE, OBJECTID, and so on. 
  1352.  
  1353.  Object setup strings contained in STRINGTABLE entries that refer to paths for 
  1354.  files or programs, and that contain a question mark in place of the boot-drive 
  1355.  letter, will have the question mark replaced by WPS when it creates a new 
  1356.  object.  This means that a REXX program that creates STRINGTABLE entries for 
  1357.  export to other systems can specify the boot drive for the target system as 
  1358.  "?".  This is one method of creating an absolute path, but only for objects on 
  1359.  the boot drive. 
  1360.  
  1361.  Here is an example of part of an object setup string: 
  1362.  
  1363.      EXENAME=?:\MYAPPL\MYAPPL.EXE;STARTUPDIR=?:\MYAPPL;
  1364.  
  1365.  See the Presentation Manager Reference, in the topic "WorkPlace Object Class 
  1366.  Hierarchy", for details about the keyword value pairs appropriate for WPFolder 
  1367.  and WPProgram object classes.  Some of these details are included in the 
  1368.  sections "Setup Strings for Folders" and "Setup Strings for Programs". 
  1369.  
  1370.  Figure 10 lists four entries that you can add to your .RC file to create a 
  1371.  Novell NetWare folder on the desktop and to define OS/2 NetWare Requester 
  1372.  programs in that folder.  The folder's icon will be placed on the desktop 25 
  1373.  percent across and 87 percent up from the lower left corner of the desktop. 
  1374.  Note that each entry in Figure 10 should be a single line in the .RC file. 
  1375.  
  1376.  
  1377. ΓòÉΓòÉΓòÉ 4.6. REXX Program for MAKEINI Function ΓòÉΓòÉΓòÉ
  1378.  
  1379. The MAKEINI program is not the only way to alter the user or system .INI file 
  1380. for the purpose of creating objects.  You can also update the current .INI file 
  1381. using a REXX program similar to the one in Figure 17. Note that this REXX 
  1382. program adds the new STRINGTABLE entry to the current OS2.INI file using the 
  1383. REXXUTIL SysIni function. This is a much easier way to accomplish the MAKEINI 
  1384. function than running the MAKEINI program itself. 
  1385.  
  1386. Using such a REXX program to create an object illustrates what MAKEINI does 
  1387. when it processes the .RC file STRINGTABLE entries.  The next boot of WPS will 
  1388. process the new string entries in the .INI file to create the new objects. 
  1389. Figure 18 lists an example of locating the boot drive for OS/2 systems. 
  1390.  
  1391.  
  1392. ΓòÉΓòÉΓòÉ 4.7. Setup Strings in the .RC File ΓòÉΓòÉΓòÉ
  1393.  
  1394. Whether MAKEINI or REXX is used to update the .INI file with STRINGTABLE 
  1395. entries, or whether REXX SysCreateObject function calls are made to create 
  1396. objects directly, all of these methods require knowledge and proper use of the 
  1397. object setup strings processed by WPS. 
  1398.  
  1399. To make the Tutorial not come up after installation or MAKEINI, remove the line 
  1400. shown below from INI.RC.  This line is an example of a STRINGTABLE entry; it 
  1401. consists of three strings, delimited by double-quotes, that appear in one line 
  1402. in the .RC file. 
  1403.  
  1404.  "PM_Workplace:InstallAutorun" "OS/2 Tutorial" "EXENAME=TUTORIAL.EXE,STARTUPDIR=\OS2\HELP"
  1405.  
  1406. To make the Drive A: object not come up after installation or MAKEINI, remove 
  1407. the following line from INI.RC: 
  1408.  
  1409.  "PM_Workplace:InstallDiskOnDesktop" "A" "ICONPOS=80 8"
  1410.  
  1411. To change the desktop directory to something other than Desktop (for example, 
  1412. to 'My Desktop'), replace the Desktop entry in the following line with 'My 
  1413. Desktop': 
  1414.  
  1415. (Before)
  1416.  
  1417.  "PM_InstallObject" "Desktop;WPDesktop;?:\" "OBJECTID=<WP_DESKTOP>"
  1418.  
  1419. (After)
  1420.  
  1421.  "PM_InstallObject" "My Desktop;WPDesktop;?:\" "OBJECTID=<MY_DESKTOP>"
  1422.  
  1423. This line in INI.RC creates a directory called 'My Desktop' on the boot drive. 
  1424. Note that the space in the title of the folder will be replaced with an 
  1425. underscore if the file system for the desktop drive is FAT (File Allocation 
  1426. Table) instead of HPFS (High Performance File System).  The process that 
  1427. creates Workplace Shell objects handles special characters and long names for 
  1428. FAT systems by truncating long names and substituting special characters. 
  1429.  
  1430. Consider the case of creating one folder with the title "My Applications for 
  1431. Work" and another folder whose title is "My Applications for Home". Each folder 
  1432. is represented by a directory name that follows the naming convention of the 
  1433. FAT file system.  WPS creates a physical directory named \MY_APPLI for the 
  1434. former folder, and one named \MY_APPL1 for the latter.  The title for each 
  1435. folder is the full name.  On the other hand, with an HPFS file system in use, 
  1436. the physical names for the directories are the same as the folder titles. 
  1437.  
  1438. Note that this method is not good for installations of standardized desktops, 
  1439. and it may confuse users who expect to see \DESKTOP as the desktop folder. 
  1440. However, this method provides a good example and explanation of how the desktop 
  1441. is defined internally, and technical support staff should be aware of it in 
  1442. case they encounter it in dealing with adventurous users. 
  1443.  
  1444. To create a folder called 'My Folder' on the desktop, add the following 
  1445. one-line entry to the .RC file: 
  1446.  
  1447.  "PM_InstallObject" "My Folder;WPFolder;<MY_DESKTOP>" "BACKGROUND=?\OS2\BITMAP\LIGHTHOU.VGA;OPEN=DEFAULT;ICONRESOURCE=61 PMWP;ICONPOS=8 70;ICONVIEWPOS=18 60 75 22;OBJECTID=<MY_FOLDER>"
  1448.  
  1449. This line creates a folder called 'My Folder' on the desktop.  The class of 
  1450. this folder is WPFolder.  The location of the folder is the desktop, which has 
  1451. an OBJECTID=<WP_DESKTOP>.  The background of the folder will have a lighthouse 
  1452. bitmap.  The icon will look like the OS/2 System icon. 
  1453.  
  1454. When you include OBJECTID in the object setup string in the .RC file, that 
  1455. parameter must be the last one in the setup string. 
  1456.  
  1457. To add an application to 'My Folder', insert the following information all on 
  1458. one line: 
  1459.  
  1460.  "PM_InstallObject" "OS/2 Window;WPProgram;<MY_FOLDER>" "EXENAME=?\OS2\CMD.EXE; PROGTYPE=WINDOWABLEVIO;HELPPANEL=8010;OBJECTID=<MY_OS2WIN>"
  1461.  
  1462. To add a shadow of Solitaire to 'My Folder': 
  1463.  
  1464.  "PM_InstallObject" "Solitaire Shadow;WPShadow;<MY_FOLDER>;" "SHADOWID=<WP_KLDK>;OBJECTID=<MY_KLDK>"
  1465.  
  1466. To add a shadow of an OS/2 window to the desktop: 
  1467.  
  1468.  "PM_InstallObject" "OS/2 Window Shadow;WPShadow;<MY_DESKTOP>;" "SHADOWID=<WP_OS2WIN>;OBJECTID=<MY_WINSHADOW>"
  1469.  
  1470. Documentation about the setup strings is contained in the  Presentation Manager 
  1471. Reference. 
  1472.  
  1473.  
  1474. ΓòÉΓòÉΓòÉ 5. SysCreateObject REXX Function ΓòÉΓòÉΓòÉ
  1475.  
  1476. To introduce this topic, the text about SysCreateObject from the REXX Reference 
  1477. is reprinted here. 
  1478.  
  1479. The syntax of the SysCreateObject function is: 
  1480.  
  1481. result=SysCreateObject(classname,title,location<,setup> <,option>)
  1482.  
  1483. where 
  1484.  
  1485.             classname
  1486.            is the name of the object class. 
  1487.  
  1488.             title
  1489.            is the object's title. 
  1490.  
  1491.             location
  1492.            is the object's location, which can be specified as either an object 
  1493.            ID (for example, <WP_DESKTOP>) or a file system path (for example, 
  1494.            C:\BIN\MYTOOLS). 
  1495.  
  1496.             setup
  1497.            is a WinCreateObject setup string. 
  1498.  
  1499.             option
  1500.            is the action taken if the object already exists. Allowed options 
  1501.            are: "fail", "replace" (delete existing object and create new 
  1502.            object), and "update" (update the settings of the existing object). 
  1503.            Only the first letter of the option is needed; all others are 
  1504.            ignored. 
  1505.  
  1506.             result
  1507.            is the return code from WinCreateObject.  The return code is 1 
  1508.            (true) if the object was created, and 0 (false) if the object was 
  1509.            not created. 
  1510.  
  1511.  When creating objects, you must create the containing object before attempting 
  1512.  to create objects within the container.  Make the folder first, then create 
  1513.  the objects to store in the folder. 
  1514.  
  1515.  Figure 19 lists an example of a program that creates a folder on the desktop 
  1516.  and then creates a program object in that folder. 
  1517.  
  1518.  
  1519. ΓòÉΓòÉΓòÉ 6. PMSW Function & Command Line Syntax ΓòÉΓòÉΓòÉ
  1520.  
  1521. The PMSW public-domain REXX function interface is available on CompuServe in 
  1522. the IBM OS/2 forums as PMSW.ZIP.  The information in this section was extracted 
  1523. from the full PMSW.INF file contained in the PMSW.ZIP distributed version. 
  1524. That file also contains details about technical design, as well as the full 
  1525. C-language source for the PMSW application. 
  1526.  
  1527. The PMSW application comes in two executable forms when uncompressed: 
  1528.  
  1529.  o  PMSW.EXE, an OS/2 PM program 
  1530.  
  1531.  o  PMSW2.DLL, a REXX external function 
  1532.  
  1533.  PMSW is invoked with two arguments: 
  1534.  
  1535.      PMSW name_mask_string [/r]
  1536.  
  1537.  where 
  1538.  
  1539.             name_mask_string
  1540.            is the name mask for the task name in the desktop Window List 
  1541.  
  1542.             /r
  1543.            is an optional switch for suppressing the actual change of focus. 
  1544.  
  1545.  If the string passed as the first argument matches a name in the Workplace 
  1546.  Shell's Window List, then that named task is given the focus by calling the 
  1547.  WinSwitchToProgram API function. 
  1548.  
  1549.  The name mask may contain wildcard characters, the asterisk and question mark, 
  1550.  which have their usual DOS command line meanings - the asterisk matches zero 
  1551.  or more characters, while the question mark matches exactly one character. 
  1552.  For example, the mask *ABC* matches a name containing the letters ABC, whereas 
  1553.  the mask *A*B*C* matches a name containing the letters A, B, and C, but not 
  1554.  necessarily next to each other. 
  1555.  
  1556.  
  1557. ΓòÉΓòÉΓòÉ 6.1. PMSW Sample Application ΓòÉΓòÉΓòÉ
  1558.  
  1559. The PMSW application is used in OS/2 .CMD files that are batch command files or 
  1560. REXX programs.  A .CMD file can invoke PMSW to test whether a named task is 
  1561. already active and to switch focus to that task, or it can launch a task and 
  1562. change focus to that task once the task is available. A REXX program can 
  1563. contain logic such that, if the target DOS application is already active when 
  1564. the REXX program begins, the DOS application receives the focus instead of the 
  1565. REXX program starting another DOS application window. 
  1566.  
  1567. LAN administrators who have LAN-resident applications of all types can use REXX 
  1568. programs to facilitate access to these applications.  A REXX program can 
  1569. examine the current LAN environment, check to see if the resources required for 
  1570. a particular application are now connected, and acquire resources automatically 
  1571. if needed.  This can be done for all types of applications. 
  1572.  
  1573. For example, say that at a customer site the cc:Mail application resides on the 
  1574. LAN.  A Mail program folder can be defined on the desktop, and it can invoke 
  1575. the REXX program MAIL.CMD.  This program tests to see whether the target 
  1576. cc:Mail application is now active, and switches focus to it if so.  If the 
  1577. cc:Mail application is not active, then MAIL.CMD checks to see if the user is 
  1578. now logged onto the LAN (because a LOGON command has been done), and whether 
  1579. the cc:Mail LAN drive has been connected, before issuing a START command . for 
  1580. cc:Mail and switching focus to it. 
  1581.  
  1582. Figure 19 lists the MAIL.CMD program. Figure 20 lists the program that uses the 
  1583. PMSW2.DLL external REXX function instead of the PMSW.EXE program. Figure 21 
  1584. lists the DOS batch file used as the indirect launching mechanism for the DOS 
  1585. application. 
  1586.  
  1587.  
  1588. ΓòÉΓòÉΓòÉ 7. Object Setup Strings ΓòÉΓòÉΓòÉ
  1589.  
  1590. The following sections describe setup strings for the different types of 
  1591. objects on the desktop.  Note that there are parameters within the setup 
  1592. strings that pertain to all objects, to folders, or to program objects. 
  1593.  
  1594. For objects, the System Object Model (SOM) class definition file is the file 
  1595. WPOBJECT.SC.  The class hierarchy for the WPObject class is: 
  1596.  
  1597.  SOMObject
  1598.        WPObject
  1599.  
  1600. The classes for folders and programs are derived from the WPObject class. 
  1601. Figure 11 shows the keyname/value pairs for the WPObject class. 
  1602.  
  1603.  
  1604. ΓòÉΓòÉΓòÉ 7.1. Setup Strings for Folders ΓòÉΓòÉΓòÉ
  1605.  
  1606. For folders, the System Object Model (SOM) class definition file is the file 
  1607. WPFOLDER.SC.  The class hierarchy for the WPFolder class is: 
  1608.  
  1609.  SOMObject
  1610.        WPObject
  1611.              WPFileSystem
  1612.                    WPFolder
  1613.  
  1614. Users can create folders by dragging a folder template from the Templates 
  1615. container onto the desktop or onto another folder, and then responding to the 
  1616. system prompts for title, etc.  Users can also create folders using REXX 
  1617. SysCreateObject calls.  The object setup-string values that can be used for 
  1618. folders are listed in Figure 12, which shows the keyname/value pairs added by 
  1619. the WPFolder class. 
  1620.  
  1621. See the section "Object Setup Strings" for object settings common to both 
  1622. WPFolder and WPProgram. 
  1623.  
  1624.  
  1625. ΓòÉΓòÉΓòÉ 7.2. Setup Strings for Programs ΓòÉΓòÉΓòÉ
  1626.  
  1627. For programs, the System Object Model (SOM) class definition file is the file 
  1628. WPPGM.SC.  The class hierarchy for the WPProgram class is: 
  1629.  
  1630.  SOMObject
  1631.        WPObject
  1632.              WPAbstract
  1633.                    WPProgram
  1634.  
  1635. Figure 13 shows the keyname/value pairs added by the WPProgram class. 
  1636.  
  1637. The WPProgram class is the program-object class.  It provides an object that 
  1638. points at executable programs, and allows the user to run that program by 
  1639. simply double-clicking on the program object.  The program can also contain a 
  1640. variety of useful additional parameters, such as the environment for the 
  1641. program and the parameters that are passed to it. An instance of this class can 
  1642. be created as a Workplace object, and is created initially by the system in its 
  1643. template form.  It has the title Program and resides in the Templates folder. 
  1644.  
  1645. Other instances of this class that are initially created by the system include: 
  1646.  
  1647.  o  DOS Full-Screen in the Command Prompts folder 
  1648.  
  1649.  o  DOS Window in the Command Prompts folder 
  1650.  
  1651.  o  OS/2 Full-Screen in the Command Prompts folder 
  1652.  
  1653.  o  OS/2 Window in the Command Prompts folder 
  1654.  
  1655.  o  Every object in the Games folder 
  1656.  
  1657.  o  Some objects in the Information folder 
  1658.  
  1659.  o  Every object in the Productivity folder 
  1660.  
  1661.  See the section "Object Setup Strings" for object settings common to both 
  1662.  WPFolder and WPProgram. 
  1663.  
  1664.  
  1665. ΓòÉΓòÉΓòÉ 8. Sample REXX Programs ΓòÉΓòÉΓòÉ
  1666.  
  1667. This section lists all the REXX programs mentioned in this article: 
  1668.  
  1669.  o  REXX Sample: Load REXXUTIL (Figure 14) 
  1670.  
  1671.  o  REXX Sample: Hidden Object (Figure 15) 
  1672.  
  1673.  o  REXX Sample: DOS Desktop Object (Figure 16) 
  1674.  
  1675.  o  REXX Sample: MAKEINI Function (Figure 17) 
  1676.  
  1677.  o  REXX Sample: Get Boot Drive (Figure 18) 
  1678.  
  1679.  o  REXX Sample: SysCreateObject (Figure 19) 
  1680.  
  1681.  o  REXX Sample: MAIL.CMD for PMSW Program Call (Figure 20) 
  1682.  
  1683.  o  REXX Sample: MAIL.CMD for PMSW2 REXX Function (Figure 21) 
  1684.  
  1685.  o  DOS Sample: CCMAIL.BAT DOS Batch File (Figure 22) 
  1686.  
  1687.  Figure 14 shows how to load the REXXUTIL function package that is used by all 
  1688.  the sample programs.  Once the REXXUTIL.DLL has been loaded, it remains 
  1689.  available for other REXX programs until it is unloaded.  Loading REXXUTIL.DLL 
  1690.  is a prerequisite for all the other sample programs. 
  1691.  
  1692.  One method of ensuring that REXXUTIL.DLL is loaded is to create a shadow 
  1693.  object in the Startup folder of the REXXLOAD.CMD program, so that the DLL is 
  1694.  loaded.  Including code in each REXX program to check if the DLL has already 
  1695.  been loaded adds a little overhead and avoids errors.  In distributing REXX 
  1696.  programs, you should include explicit code to test for and load REXXUTIL.DLL, 
  1697.  because other users may not have the same initial environment. 
  1698.  
  1699.  
  1700. ΓòÉΓòÉΓòÉ <hidden> Figure 14:  REXX Sample:  Load REXXUTIL ΓòÉΓòÉΓòÉ
  1701.  
  1702. /* REXX program */
  1703. /* ==============================================================
  1704.    Check to see if all REXX utility functions have been loaded,
  1705.    and load the functions if needed.  This needs to be done only
  1706.    once, because the functions remain loaded and accessible.
  1707.    NOTE: RxFuncQuery tests for REXX load.
  1708.    ==============================================================
  1709. */
  1710. if 0 < RxFuncQuery('SysLoadFuncs') THEN DO;
  1711.    Call rxfuncadd 'SysLoadFuncs','REXXUTIL','SysLoadFuncs';
  1712.    Call SysLoadFuncs;
  1713. END;
  1714.  
  1715. /* Figure 14.  REXX Sample: Load REXXUTIL */
  1716.  
  1717.  
  1718. ΓòÉΓòÉΓòÉ <hidden> Figure 15:  REXX Sample:  Hidden Object ΓòÉΓòÉΓòÉ
  1719.  
  1720. /* REXX program */
  1721. TESTSTR='"*OS/2 CMD*"'
  1722. '@PMSW' TESTSTR '/r'
  1723. if RC = 1 then do
  1724.    '@PMSW' TESTSTR;'@EXIT';
  1725. end;
  1726. ClassName='WPProgram'; Location='<WP_NOWHERE>';
  1727. BaseSetup='EXENAME=*;PROGTYPE=WINDOWABLEVIO;'||,
  1728. 'MAXIMIZED=YES;CCVIEW=NO;OPEN=DEFAULT;'
  1729. StartUpDir='C:\';
  1730. ObjName='OS2_Cmd'; Title='OS/2 Cmd';
  1731. Call BldObject;
  1732. '@PMSW' TESTSTR
  1733. EXIT;      /* Leave the program here */
  1734. BldObject: /* procedure to build object */
  1735. SetupString=BaseSetup||StartUpDir||'OBJECTID=<'ObjName'>;'
  1736. Call SysCreateObject  ClassName, Title, Location, SetupString, 'UPDATE';
  1737. return;
  1738.  
  1739. /* Figure 15.  REXX Sample: Hidden Object */
  1740.  
  1741.  
  1742. ΓòÉΓòÉΓòÉ <hidden> Figure 16:  DOS Desktop Object ΓòÉΓòÉΓòÉ
  1743.  
  1744. /* REXX */
  1745. ClassName='WPProgram'; Location='<WP_DESKTOP>';
  1746. BaseSetup='EXENAME=\OS2\MDOS\qbasic.exe;PROGTYPE=DOS;'||,
  1747. 'MAXIMIZED=YES;CCVIEW=NO;OPEN=DEFAULT;'
  1748. StartUpDir='\OS2\mdos';
  1749. ObjName='DOS_Basic'; Title='QBASIC';
  1750. Call BldObject;
  1751. EXIT;      /* Leave the program here */
  1752. BldObject: /* procedure to build object */
  1753. SetupString=BaseSetup||StartUpDir||'OBJECTID=<'ObjName'>;'
  1754. Call SysCreateObject  ClassName, Title, Location, SetupString, 'UPDATE';
  1755. return;
  1756.  
  1757. /* Figure 16.  REXX Sample: DOS Desktop Object */
  1758.  
  1759.  
  1760. ΓòÉΓòÉΓòÉ <hidden> Figure 17:  MAKEINI Function ΓòÉΓòÉΓòÉ
  1761.  
  1762. /* REXX program */
  1763. /* assumes REXXUTIL is loaded */
  1764. Call SysIni "USER",,
  1765.    "PM_InstallObject",,
  1766.    "New Object;WPProgram;<WP_DESKTOP>",,
  1767.    "EXENAME=C:\RESULTS.CMD;PROGTYPE=WINDOWABLEVIO;"||,
  1768.    "OPEN=DEFAULT;MAXIMIZED=YES;"
  1769.  
  1770. /* Figure 17.  REXX Sample: MAKEINI Function */
  1771.  
  1772.  
  1773. ΓòÉΓòÉΓòÉ <hidden> Figure 18:  Get Boot Drive ΓòÉΓòÉΓòÉ
  1774.  
  1775. /* REXX program to find the boot drive of the OS/2 system */
  1776. /* Assumes REXXUTIL is loaded */
  1777. irc=SysIni('BOTH','FolderWorkareaRunningObjects','ALL:','Objects');
  1778. BootDrive=left(Objects.1,2);
  1779. say 'Boot drive is' BootDrive
  1780. return;
  1781.  
  1782. /* Figure 18.  REXX Sample: Get Boot Drive */
  1783.  
  1784.  
  1785. ΓòÉΓòÉΓòÉ <hidden> Figure 19:  REXX Sample:  SysCreateObject ΓòÉΓòÉΓòÉ
  1786.  
  1787. /* Code */
  1788. If  SysCreateObject("WPFolder","Mail Folder","<WP_DESKTOP>")
  1789.   Say 'Mail Folder successfully created'
  1790.  
  1791. /* Create a folder object, and then create a program object in that */
  1792. /* folder */
  1793. If SysCreateObject("WPFolder", "MyFolder", "C:\",,
  1794.    "OBJECTID=<MYFOLDER>") Then Do
  1795.    If SysCreateObject("WPProgram", "MyProgram", "<MYFOLDER>",,
  1796.       "EXENAME=C:\TOOLS\MYPRG.EXE")  Then
  1797.       Say 'Folder "MyFolder" and Program "MyProgram" have been created'
  1798.    Else Say 'Could not create program "MyProgram"'
  1799. End
  1800. Else Say 'Could not create folder "MyFolder"'
  1801.  
  1802. /* Figure 19.  REXX Sample: SysCreateObject */
  1803.  
  1804.  
  1805. ΓòÉΓòÉΓòÉ <hidden> Figure 20:  REXX Sample:  MAIL.CMD with PMSW ΓòÉΓòÉΓòÉ
  1806.  
  1807. /* REXX MAIL.CMD uses PMSW.EXE program calls */
  1808. 'SETLOCAL'
  1809. 'C:'
  1810. 'CD \CCMAIL'
  1811. if 0 < RxFuncQuery('SysLoadFuncs') THEN DO;
  1812.    Call rxfuncadd 'SysLoadFuncs','REXXUTIL','SysLoadFuncs';
  1813.    Call SysLoadFuncs;
  1814. END;
  1815. CCMAIL='CCMAIL';
  1816. FirstName=""; LastName=""; ProcOpts=""; UserPassWord="";
  1817. parse upper arg FirstName LastName UserPassWord;
  1818. CCMAILServer='ccmail';
  1819. MDRIVE.0=0;
  1820. RC.0='FOCUS:'; RC.1='READY:'; RC.2='ERROR:';
  1821. irc=SysFileTree('M:\CCMAIL\MAIL.*','MDRIVE','FSO');
  1822. if MDRIVE.0<1 then do;
  1823.    '@NET USE M: ' CCMAILServer;
  1824.    RRC=RC;
  1825. end;
  1826. else do;
  1827.   RRC=0;
  1828. end;
  1829. IF RRC=0 THEN DO; bREADY=0;
  1830.    'PMSW' ccmail '/R';
  1831.    Result=RC.RC
  1832.    if Result\='READY:' then do;
  1833.       'START "CCMAIL" /C /MIN /WIN c:\CCMAIL\CCMAIL.BAT' } one
  1834.       FirstName LastName UserPassword;                   } line
  1835.    end;
  1836.    else do;
  1837.       'PMSW' ccmail; Result=RC.RC;
  1838.       if Result='FOCUS:' then bREADY=1;
  1839.    end;
  1840.    do while (bREADY<1);
  1841.       'PMSW' ccmail '/R'
  1842.       Result=RC.RC;
  1843.       if Result='READY:' then do;
  1844.          'PMSW' ccmail
  1845.          Result=RC.RC;
  1846.          if Result='FOCUS:' then do;
  1847.             bREADY=1;
  1848.          end;
  1849.       end;
  1850.       else Call SysSleep(2);
  1851.    end;
  1852. END;
  1853. else do;
  1854.    if RRC=2 then do;
  1855.       'net use m: /d';
  1856.    end;
  1857.    say "UNABLE TO ACCESS CCMAIL"
  1858. end;
  1859. byby:;
  1860. '@EXIT';
  1861.  
  1862. /* Figure 20.  REXX Sample:  MAIL.CMD for PMSW Program Call */
  1863.  
  1864.  
  1865. ΓòÉΓòÉΓòÉ <hidden> Figure 21 ΓòÉΓòÉΓòÉ
  1866.  
  1867. /* REXX MAIL.CMD */
  1868. 'SETLOCAL'
  1869. 'C:'
  1870. 'CD \CCMAIL'
  1871. if 0 < RxFuncQuery('SysLoadFuncs') THEN DO;
  1872.    Call rxfuncadd 'SysLoadFuncs','REXXUTIL','SysLoadFuncs';
  1873.    Call SysLoadFuncs;
  1874. END;
  1875. CCMAIL='CCMAIL';
  1876. RC=RXFUNCADD('PMSW2','PMSW2','PMSW2');
  1877. FirstName=""; LastName=""; ProcOpts=""; UserPassWord="";
  1878. parse upper arg FirstName LastName UserPassWord;
  1879. CCMAILServer='ccmail';
  1880. MDRIVE.0=0;
  1881. irc=SysFileTree('M:\CCMAIL\MAIL.*','MDRIVE','FSO');
  1882. if MDRIVE.0<1 then do;
  1883.    '@NET USE M: ' CCMAILServer;
  1884.    RRC=RC;
  1885. end;
  1886. else do;
  1887.   RRC=0;
  1888. end;
  1889. IF RRC=0 THEN DO; bREADY=0;
  1890.    Result=PMSW2(ccmail,'/r');
  1891.    if Result\='READY:' then do;
  1892.       'START "CCMAIL" /C /MIN /WIN c:\CCMAIL\CCMAIL.BAT' } one
  1893.       FirstName LastName UserPassword;                   } line
  1894.    end;
  1895.    else do;
  1896.       Result=PMSW2(ccmail); if Result='FOCUS:' then bREADY=1;
  1897.    end;
  1898.    do while (bREADY<1);
  1899.       Result=PMSW2(ccmail,'/r');
  1900.       if Result='READY:' then do;
  1901.          Result=PMSW2(ccmail);
  1902.          if Result='FOCUS:' then do;
  1903.             bREADY=1;
  1904.          end;
  1905.       end;
  1906.       else Call SysSleep(2);
  1907.    end;
  1908. END;
  1909. else do;
  1910.    if RRC=2 then do;
  1911.       'net use m: /d';
  1912.    end;
  1913.    say "UNABLE TO ACCESS CCMAIL"
  1914. end;
  1915. byby:;
  1916. RC=RXFUNCDROP('PMSW2');
  1917. '@EXIT';
  1918.  
  1919. /* Figure 21.  REXX Sample: MAIL.CMD for PMSW2 REXX Function */
  1920.  
  1921.  
  1922. ΓòÉΓòÉΓòÉ <hidden> Figure 22 ΓòÉΓòÉΓòÉ
  1923.  
  1924. @ECHO OFF
  1925. C:
  1926. CD \CCMAIL
  1927. CD M:\CCMAIL
  1928. SET CCCONFIG=C:\CCMAIL\CCMAIL.INI
  1929. SET PATH=M:\CCMAIL;%PATH%
  1930. SET TEMP=C:\
  1931. SET WP=/D-C:\WP51/PF-C:\WP51/M-VIEW
  1932. IF X==X%1 GOTO NONAME
  1933. IF X==X%3 GOTO NOPASS
  1934. M:MAIL /N"%1 %2" /P"%3"
  1935. GOTO EXIT
  1936. :NOPASS
  1937. M:MAIL /N"%1 %2"
  1938. GOTO EXIT
  1939. :NONAME
  1940. M:MAIL
  1941. :EXIT
  1942. EXIT
  1943.  
  1944. rem   Figure 22.  DOS Sample: CCMAIL.BAT DOS Batch File
  1945.  
  1946.  
  1947. ΓòÉΓòÉΓòÉ 9. Details of Parse Syntax ΓòÉΓòÉΓòÉ
  1948.  
  1949. This information supplements the REXX documentation contained in the REXX 
  1950. Information online softcopy in the Information folder on the OS/2 2.1 desktop. 
  1951. It covers the REXX PARSE keyword only, and provides some explanation of the 
  1952. proper use of templates.  See PARSE keyword to access your online REXX 
  1953. Information manual for syntax of the PARSE keyword. 
  1954.  
  1955. The parse rules are fairly simple. 
  1956.  
  1957.  o The template consists of alternate symbols and patterns. 
  1958.  
  1959.  o Each symbol and pattern is used in parsing the string exactly once. 
  1960.  
  1961.  o Blanks may be used between symbols and patterns to improve readability. 
  1962.  
  1963.  o The value assigned to a variable in a template consists of the characters in 
  1964.    the input value between the point within the input value that is matched by 
  1965.    the pattern to the left of the variable in the template and the point within 
  1966.    the input value that is matched by the pattern to the right of the variable 
  1967.    in the template. 
  1968.  
  1969.  o If no pattern precedes the first variable in a template, then the match 
  1970.    point for that variable is the start of the input value. 
  1971.  
  1972.  o All variables that appear in a template are assigned values. 
  1973.  
  1974.  o If the template consists only of variables, then the input value is parsed 
  1975.    using words delimited by blanks, and the resulting word values have no 
  1976.    leading or trailing blanks. 
  1977.  
  1978.  o The symbol that is a single period may be used in a template as a 
  1979.    place-holder for a variable, and the data that would have been assigned to a 
  1980.    variable in that position is discarded. 
  1981.  
  1982.  
  1983. ΓòÉΓòÉΓòÉ 9.1. Parsing Words ΓòÉΓòÉΓòÉ
  1984.  
  1985. Consider the code: 
  1986.  
  1987.    parse value "Today is a fine day" with v1 v2 v3
  1988.  
  1989. v1 would contain the string "Today", v2 "is", and v3 "a fine day" 
  1990.  
  1991. Note that leading blanks are removed from the values as they are parsed into 
  1992. each variable. 
  1993.  
  1994. The period may be used to skip words in parsing a value. 
  1995.  
  1996.    parse value "Today is a fine day" with v1 . v3
  1997.  
  1998. v1 would contain "Today", and v3 "a fine day".  The word "is" was discarded by 
  1999. the dummy variable represented by the period in the template. 
  2000.  
  2001.  
  2002. ΓòÉΓòÉΓòÉ 9.2. Parsing Using Punctuation ΓòÉΓòÉΓòÉ
  2003.  
  2004. Use of punctuation in parsing changes the results of parsing.  The punctuation, 
  2005. and only the punctuation, is removed from the original value.  Any spaces that 
  2006. follow the punctuation and precede the value are retained. 
  2007.  
  2008.    parse value 'Movies, ball-park' with v1 ',' v2
  2009.  
  2010. Variable v1 would contain the string "Movies" 
  2011.  
  2012. Variable v2 would contain the string " ball-park" and would have a leading 
  2013. space. 
  2014.  
  2015.  
  2016. ΓòÉΓòÉΓòÉ 9.3. Parsing with Variables ΓòÉΓòÉΓòÉ
  2017.  
  2018. The pattern in a parse command may be specified as a variable if it is included 
  2019. within parentheses: 
  2020.  
  2021.    comma=','
  2022.    parse value 'Movies, ball-park' with v1 (comma) v2
  2023.  
  2024. This produces the same results as the preceding example.  It uses the value of 
  2025. the variable 'comma' 
  2026.  
  2027.  
  2028. ΓòÉΓòÉΓòÉ 9.4. Parse by Columns ΓòÉΓòÉΓòÉ
  2029.  
  2030. You may specify where to break a value using an absolute or relative column 
  2031. number. 
  2032.  
  2033.    parse value 'ABCDEFGHIJKLMN' with v1 5 v2
  2034.  
  2035. Variable v1 will contain 'ABCDE', and v2 'FGHIJKLMN' 
  2036.  
  2037.    parse value 'ABCDEFGHIJKLMN' with v1 5 v2 +5 v3
  2038.  
  2039. Here, v1 would be the same as before, but v2 would contain 'FGHIJ', and v3 
  2040. 'KLMN'.  The '+5' is relative, not absolute, and is the number of characters to 
  2041. put into v2 in this case. 
  2042.  
  2043. String and numeric patterns can be mixed within a parse command. 
  2044.  
  2045. When using numbers in a template, the input value can be parsed into values 
  2046. more than once when the numeric value represents a column to the left of data 
  2047. that has been parsed into variables already, in effect "moving backwards" in 
  2048. the input value. 
  2049.  
  2050.  
  2051. ΓòÉΓòÉΓòÉ 9.5. Parsing Multiple Strings ΓòÉΓòÉΓòÉ
  2052.  
  2053. The comma may be used in a template to indicate that PARSE is to process 
  2054. another string.  The only time multiple strings are available to parse is for 
  2055. the ARG or PARSE ARG keywords, or when an internal function or subroutine is 
  2056. called using multiple strings as separate arguments. 
  2057.  
  2058.    parse arg v1 v2, v3 v4
  2059.  
  2060. The preceding code will parse the first string value passed to the program or 
  2061. function using words, and the first word of the first string will be placed 
  2062. into v1, with the remainder of the first string into v2. Then, parse skips to 
  2063. the second string and parses the first word into v3, and the remainder of the 
  2064. string into v4. 
  2065.  
  2066.  
  2067. ΓòÉΓòÉΓòÉ 10. Figures ΓòÉΓòÉΓòÉ
  2068.  
  2069. Figure 1:  Program Tab 
  2070.  
  2071. Figure 2:  Default Command Processors 
  2072.  
  2073. Figure 3:  Special Parameter Strings 
  2074.  
  2075. Figure 4:  Filename Association 
  2076.  
  2077. Figure 5:  Type Association 
  2078.  
  2079. Figure 6:  Defining New Default Action 
  2080.  
  2081. Figure 7:  File Name & Extension Association 
  2082.  
  2083. Figure 8:  Adding a New Menut Item 
  2084.  
  2085. Figure 9:  RUN Commands in CONFIG.SYS 
  2086.  
  2087. Figure 10:  Novell Entries in INI.RC 
  2088.  
  2089. Figure 11:  WPObject Keyname/Value Pairs 
  2090.  
  2091. Figure 12:  WPFolder Keyname/Value Pairs 
  2092.  
  2093. Figure 13:  WPProgram Keyname/Values Pairs 
  2094.  
  2095. Figure 14:  REXX Sample:  Load REXXUTIL 
  2096.  
  2097. Figure 15:  REXX Sample:  Hidden Object 
  2098.  
  2099. Figure 16:  REXX Sample:  Desktop Object 
  2100.  
  2101. Figure 17:  REXX Sample:  MAKEINI Function 
  2102.  
  2103. Figure 18:  REXX Sample:  Get Boot Drive 
  2104.  
  2105. Figure 19:  REXX Sample:  SysCreateObject 
  2106.  
  2107. Figure 20:  REXX Sample:  MAIL.CMD, PMSW 
  2108.  
  2109. Figure 21:  REXX Sample:  MAIL.CMD, PMSW2 
  2110.  
  2111. Figure 22:  DOS Sample:  CCMAIL.BAT 
  2112.  
  2113.  
  2114. ΓòÉΓòÉΓòÉ 11. Reference Material ΓòÉΓòÉΓòÉ
  2115.  
  2116. The cited references are available in softcopy form as Information Presentation 
  2117. Facility (IPF) .INF files; some may also be available as harcopy manuals.  The 
  2118. softcopy versions of manuals are usually newer and available sooner than 
  2119. printed versions. 
  2120.  
  2121. OS/2 2.x Developer's Toolkit.  This toolkit contains softcopy information about 
  2122. the Application Programming Interface (API) functions for the OS/2 Control 
  2123. Program, Presentation Manager, DOS/Windows, and System Object Model (SOM).  It 
  2124. also contains the Presentation Manager Reference.  The toolkit is a component 
  2125. of C++ for OS/2, and is also available as a separate product. 
  2126.  
  2127. OS/2 Procedures Language/2 REXX. This hardcopy is available as a separate order 
  2128. item from IBM and contains additional detailed information on PARSE that is not 
  2129. in the online softcopy REXX Information that is part of the OS/2 2.1 installed 
  2130. components. 
  2131.  
  2132. Presentation Manager & Workplace Shell Redbook, order number GG24-3732, April 
  2133. 1992, IBM Corporation.  This Redbook provides guidance and examples for 
  2134. developing applications for PM and WPS.  It is Volume 3 in the Technical 
  2135. Compendium of five volumes, GBOF-2254. 
  2136.  
  2137. Application Development Redbook, GG24-3774, April 1992, IBM Corporation.  This 
  2138. Redbook examines the Presentation Manager execution environment, describes the 
  2139. structure and implementation of PM applications, and illustrates PM's 
  2140. facilities for supporting object-oriented techniques.  It also discusses the 
  2141. management of workstation-based application development projects.  This is 
  2142. Volume 4 in the Technical Compendium of five volumes, GBOF-2254. 
  2143.  
  2144. REXX from Bark to Byte, GG24-4199, IBM Corporation. This Redbook provides 
  2145. valuable technical information on the use of REXX with OS/2, covering OS/2 2.1 
  2146. and SysCreateObject functions. REXX programmers will find this book full of 
  2147. useful data and examples. 
  2148.  
  2149.  
  2150. ΓòÉΓòÉΓòÉ 12. Biography ΓòÉΓòÉΓòÉ
  2151.  
  2152.  Bruce E. H╨ñgman is a senior systems engineer with 30 years of programming 
  2153. experience on IBM systems, an Air Force Vietnam veteran, and former US Air 
  2154. Force commissioned officer and technical instructor at the Computer Sciences 
  2155. School, Quantico, Virginia. He currently works for Electronic Data Systems 
  2156. Corp. at IBM Boca Raton in Customer Migration Support and can be reached 
  2157. electronically at CompuServe userid 72050,1327 or Internet userid 
  2158. bhogman@bcrvm1.vnet.ibm.com. 
  2159.  
  2160.  
  2161. ΓòÉΓòÉΓòÉ <hidden> Computer Sciences School ΓòÉΓòÉΓòÉ
  2162.  
  2163.  The Computer Sciences School, Marine Corps Development & Education Command, 
  2164. Quantico VA 22134, serves the needs of all branches of the service to train 
  2165. enlisted and officer military members in compiler and assembler languages and 
  2166. all facets of computer science. 
  2167.  
  2168.  
  2169. ΓòÉΓòÉΓòÉ <hidden> Electronic Data Systems Corp. ΓòÉΓòÉΓòÉ
  2170.  
  2171.  Electronic Data Systems Corporation 
  2172. 4800 North Federal Highway, Suite E100 
  2173. Boca Raton  FL  33431 
  2174. (407) 362-8113 
  2175.  
  2176.  
  2177. ΓòÉΓòÉΓòÉ <hidden> Migration Advocate Program ΓòÉΓòÉΓòÉ
  2178.  
  2179.  For information on Customer Migration Support staffed from Boca Raton, 
  2180. Florida, under Ralph Sorrentino, please contact your local IBM representative. 
  2181. IBM vnet users can contact Gino Troy, Jr. (GTROY@AUSVM1) who handles marketing 
  2182. of personal systems support. 
  2183.  
  2184.  
  2185. ΓòÉΓòÉΓòÉ <hidden> 72050,1327 ΓòÉΓòÉΓòÉ
  2186.  
  2187.  72050,1327 is Bruce's personal id on Compuserve, where he visits the IBM OS/2 
  2188. fora on a regular basis.  Look for his public domain files in the IBM OS/2 User 
  2189. forum. 
  2190.  
  2191.  
  2192. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  2193.  
  2194. A Universal Naming Convention (UNC) name is a name given to a device, server, 
  2195. or resource to give users and applications access to the resource across the 
  2196. network.  An example is 
  2197.  
  2198.    \\server\drive\file.ext
  2199.  
  2200.  
  2201. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  2202.  
  2203. "(OS/2 2.1)" in the Keyname column indicates the start of values for PROGTYPE 
  2204. that pertain only to OS/2 2.1. 
  2205.  
  2206. The PROGTYPE=prog_31_xxx values pertain only to OS/2 2.1 and later releases of 
  2207. the operating system.  Values above the PROG_31_xxx values can be used for all 
  2208. releases OS/2 2.x. 
  2209.  
  2210.  
  2211. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  2212.  
  2213. SET values require special escape-character handling when they contain special 
  2214. characters such as commas or semicolons.  Use the caret (^) character (the 
  2215. upper-case 6 on US keyboards) as an escape immediately before the special 
  2216. character.  A good example of this is the SET DOS_VERSION value, which has 
  2217. commas in it: 
  2218.  
  2219.    SET DOS_VERSION=USERPGM.EXE^,10^,10^,4,OTHER.EXE^,2^,3^,4;
  2220.  
  2221. In the case of DOS_VERSION, all the values will be replaced by the value you 
  2222. enter. 
  2223.  
  2224.  
  2225. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  2226.  
  2227. STARTUPDIR for drag-and-drop launching of programs is the directory that 
  2228. contains the dropped data file when a value is not specified explicitly. 
  2229.  
  2230.  
  2231. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  2232.  
  2233. The term Window List is used in the OS/2 Command Reference, and that is indeed 
  2234. the title of that window.  However, programming references and internal code 
  2235. refers to it instead as the switch list. This article uses Window List.
  2236.  
  2237.  
  2238. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  2239.  
  2240. OBJECTIDs are strings that are used as identifiers of locations or of objects 
  2241. on the desktop.  The desktop itself has an OBJECTID of <WP_DESKTOP>, and you 
  2242. can use this identifier as a location when you want to define objects for the 
  2243. desktop.  An alternative method of specifying the location is to use the 
  2244. physical file system name of the object.  The desktop would be C:\DESKTOP if C: 
  2245. is the boot drive and the system is OS/2 2.1 or higher.  If you specify 
  2246. OBJECTID in a setup string value in an .RC file or when duplicating the MAKEINI 
  2247. STRINGTABLE function (see explanation later), then the OBJECTID parameter must 
  2248. be last. 
  2249.  
  2250.  
  2251. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  2252.  
  2253. The strings in the Value column may be displayed as two strings in order to 
  2254. reduce the size of this column.  The values should be single strings with no 
  2255. spaces within the value.  For example: =PROG_31_STDSEAMLESSCOMMON;