home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mod201j.zip / modula2.exe / os2api / winprogr.def < prev    next >
Text File  |  1994-07-05  |  10KB  |  242 lines

  1. DEFINITION MODULE WINPROGRAMLIST;
  2.  
  3. (************************************************************************
  4.   OS/2 2.x Presentation Manager Shell Program List Calls
  5.  
  6.   Copyright (c) 1992, 1994 by Juergen Neuhoff
  7. *************************************************************************)
  8.  
  9. (*$XL+       Modula-2 language extensions: '_' allowed for symbol names *)
  10. (*$CDECL+    C-style procedures                                         *)
  11. (*$A         default alignment for record fields                        *)
  12.  
  13. IMPORT SYSTEM;
  14. FROM   OS2DEF       IMPORT TYPEPREFIX, PSZ, HWND;
  15. FROM   WINWINDOWMGR IMPORT SWP;
  16. IMPORT WINDEF;
  17.  
  18. TYPE (* program handle *)
  19.   HPROGRAM       = WINDEF.HPROGRAM;
  20.   HAPP           = WINDEF.HAPP;
  21.  
  22. TYPE (* ini file handle *)
  23.   HINI           = WINDEF.HINI;
  24.  
  25. CONST (* maximum path length *)
  26.   MAXPATHL               = 128;
  27.  
  28. CONST (* root group handle *)
  29.   SGH_ROOT               = HPROGRAM( -1 );
  30.  
  31. TYPE
  32.   HPROGARRAY             = RECORD (* hpga *)
  33.     CASE                   : TYPEPREFIX OF
  34.     | TRUE                 :
  35.       ahprog               : ARRAY [0..0] OF HPROGRAM;
  36.     | FALSE                :
  37.       ProgHandle           : ARRAY [0..0] OF HPROGRAM;
  38.     END;                   END;
  39.   PHPROGARRAY            = POINTER TO HPROGARRAY;
  40.  
  41. TYPE
  42.   PROGCATEGORY           = LONGCARD;   (* progc *)
  43.   PPROGCATEGORY          = POINTER TO PROGCATEGORY;
  44.  
  45. CONST (* values acceptable for PROGCATEGORY for PM groups *)
  46.   PROG_DEFAULT              = PROGCATEGORY( 0 );
  47.   PROG_FULLSCREEN           = PROGCATEGORY( 1 );
  48.   PROG_WINDOWABLEVIO        = PROGCATEGORY( 2 );
  49.   PROG_PM                   = PROGCATEGORY( 3 );
  50.   PROG_GROUP                = PROGCATEGORY( 5 );
  51.   PROG_REAL                 = PROGCATEGORY( 4 );
  52.   PROG_VDM                  = PROGCATEGORY( 4 );
  53.   PROG_WINDOWEDVDM          = PROGCATEGORY( 7 );
  54.   PROG_DLL                  = PROGCATEGORY( 6 );
  55.   PROG_PDD                  = PROGCATEGORY( 8 );
  56.   PROG_VDD                  = PROGCATEGORY( 9 );
  57.   PROG_WINDOW_REAL          = PROGCATEGORY( 10 );
  58.   PROG_WINDOW_PROT          = PROGCATEGORY( 11 );
  59.   PROG_30_STD               = PROGCATEGORY( 11 );
  60.   PROG_WINDOW_AUTO          = PROGCATEGORY( 12 );
  61.   PROG_SEAMLESSVDM          = PROGCATEGORY( 13 );
  62.   PROG_30_STDSEAMLESSVDM    = PROGCATEGORY( 13 );
  63.   PROG_SEAMLESSCOMMON       = PROGCATEGORY( 14 );
  64.   PROG_30_STDSEAMLESSCOMMON = PROGCATEGORY( 14 );
  65.   PROG_31_STDSEAMLESSVDM    = PROGCATEGORY( 15 );
  66.   PROG_31_STDSEAMLESSCOMMON = PROGCATEGORY( 16 );
  67.   PROG_31_ENHSEAMLESSVDM    = PROGCATEGORY( 17 );
  68.   PROG_31_ENHSEAMLESSCOMMON = PROGCATEGORY( 18 );
  69.   PROG_31_ENH               = PROGCATEGORY( 19 );
  70.   PROG_31_STD               = PROGCATEGORY( 20 );
  71.   PROG_RESERVED             = PROGCATEGORY( 255 );
  72.  
  73. TYPE
  74.   PROGTYPE               = RECORD (* progt *)
  75.     CASE                   : TYPEPREFIX OF
  76.     | TRUE                 :
  77.       progc                : PROGCATEGORY;
  78.       fbVisible            : LONGCARD;
  79.     | FALSE                :
  80.       ProgCategory         : PROGCATEGORY;
  81.       VisibleFlag          : LONGCARD;
  82.     END;                   END;
  83.   PPROGTYPE               = POINTER TO PROGTYPE;
  84.  
  85. CONST (* visibility flag for PROGTYPE structure *)
  86.   SHE_VISIBLE            = 00H;
  87.   SHE_INVISIBLE          = 01H;
  88.   SHE_RESERVED           = 0FFH;
  89.  
  90. CONST (* Protected group flag for PROGTYPE structure *)
  91.   SHE_UNPROTECTED        = 00H;
  92.   SHE_PROTECTED          = 02H;
  93.  
  94. TYPE (* Structures associated with 'Prf' calls *)
  95.   PROGDETAILS            = RECORD      (* progde *)
  96.     Length                 : LONGCARD; (* set this to sizeof(PROGDETAILS)  *)
  97.     CASE                   : TYPEPREFIX OF
  98.     | TRUE                 :
  99.       progt                : PROGTYPE;
  100.       pszTitle             : PSZ;      (* any of the pointers can be NULL  *)
  101.       pszExecutable        : PSZ;
  102.       pszParameters        : PSZ;
  103.       pszStartupDir        : PSZ;
  104.       pszIcon              : PSZ;
  105.       pszEnvironment       : PSZ;      (* this is terminated by  /0/0      *)
  106.       swpInitial           : SWP;      (* this replaces XYWINSIZE          *)
  107.     | FALSE                :
  108.       ProgTitle            : PROGTYPE;
  109.       Title                : PSZ;      (* any of the pointers can be NULL  *)
  110.       Executable           : PSZ;
  111.       Parameters           : PSZ;
  112.       StartupDir           : PSZ;
  113.       Icon                 : PSZ;
  114.       Environment          : PSZ;      (* this is terminated by  /0/0      *)
  115.       InitialSWP           : SWP;      (* this replaces XYWINSIZE          *)
  116.     END;                   END;
  117.   PPROGDETAILS           = POINTER TO PROGDETAILS;
  118.   PROGTITLE              = RECORD      (* progti *)
  119.     CASE                   : TYPEPREFIX OF
  120.     | TRUE                 :
  121.       hprog                : HPROGRAM;
  122.       progt                : PROGTYPE;
  123.       pszTitle             : PSZ;
  124.     | FALSE                :
  125.       ProgHandle           : HPROGRAM;
  126.       ProgTitle            : PROGTYPE;
  127.       Title                : PSZ;
  128.     END;                   END;
  129.   PPROGTITLE             = POINTER TO PROGTITLE;
  130.  
  131. PROCEDURE PrfQueryProgramTitles
  132. ( IniHandle              : HINI;
  133.   ProgGroupHandle        : HPROGRAM;
  134.   Titles                 : PPROGTITLE;
  135.   BufferMax              : LONGCARD;
  136.   VAR Count              : LONGCARD
  137. )                        : LONGCARD;
  138.  
  139. (*********************************************************************)
  140. (*  NOTE: string information is concatanated after the array of      *)
  141. (*        PROGTITLE structures so you need to allocate storage       *)
  142. (*        greater than TSIZE(PROGTITLE)*cPrograms to query programs  *)
  143. (*        in a group.                                                *)
  144. (*                                                                   *)
  145. (*  PrfQueryProgramTitles recommended usage to obtain titles of all  *)
  146. (*  programs in a group (Hgroup=SGH_ROOT is for all groups):         *)
  147. (*                                                                   *)
  148. (*  BufLen := PrfQueryProgramTitles                                  *)
  149. (*  ( Hini, Hgroup, PPROGTITLE( NIL ), 0, Count );                   *)
  150. (*  Storage.ALLOCATE( pBuffer, BufLen );                             *)
  151. (*  Len := PrfQueryProgramTitles                                     *)
  152. (*  ( Hini, Hgroup, PPROGTITLE( pBuffer ), BufLen, Count );          *)
  153. (*                                                                   *)
  154. (*********************************************************************)
  155.  
  156. PROCEDURE PrfAddProgram
  157. ( IniHandle              : HINI;
  158.   VAR Details            : PROGDETAILS;
  159.   ProgGroupHandle        : HPROGRAM
  160. )                        : HPROGRAM;
  161.  
  162. PROCEDURE PrfChangeProgram
  163. ( IniHandle              : HINI;
  164.   ProgHandle             : HPROGRAM;
  165.   VAR Details            : PROGDETAILS
  166. )                        : BOOLEAN;
  167.  
  168. PROCEDURE PrfQueryDefinition
  169. ( IniHandle              : HINI;
  170.   ProgHandle             : HPROGRAM;
  171.   Details                : PPROGDETAILS;
  172.   BufferMax              : LONGCARD
  173. )                        : LONGCARD;
  174.  
  175. (*********************************************************************)
  176. (*  NOTE: string information is concatanated after the PROGDETAILS   *)
  177. (*        field structure so you need to allocate storage greater    *)
  178. (*        than TSIZE(PROGDETAILS) to query programs                  *)
  179. (*                                                                   *)
  180. (*  Sample PrfQueryDefinition recomended usage:                      *)
  181. (*                                                                   *)
  182. (*  BufLen := PrfQueryDefinition                                     *)
  183. (*  ( Hini, Hprog, PPROGDETAILS( NIL ), 0 );                         *)
  184. (*  Storage.ALLOCATE( pBuffer, BufLen );                             *)
  185. (*  pProgDetails := SYSTEM.ADR( pBuffer );                           *)
  186. (*  pProgDetails^.Length := TSIZE( PPROGDETAILS );                   *)
  187. (*  len := PrfQueryDefinition                                        *)
  188. (*  ( Hini, Hprog, PPROGDETAILS( pBuffer ), BufLen );                *)
  189. (*********************************************************************)
  190.  
  191. PROCEDURE PrfRemoveProgram
  192. ( IniHandle              : HINI;
  193.   ProgHandle             : HPROGRAM
  194. )                        : BOOLEAN;
  195.  
  196. PROCEDURE PrfQueryProgramHandle
  197. ( IniHandle              : HINI;
  198.   Exe                    : ARRAY OF CHAR;
  199.   ProgArray              : PHPROGARRAY;
  200.   BufferMax              : LONGCARD;
  201.   VAR Count              : LONGCARD
  202. )                        : LONGCARD;
  203.  
  204. PROCEDURE PrfCreateGroup
  205. ( IniHandle              : HINI;
  206.   Title                  : ARRAY OF CHAR;
  207.   Visibility             : SHORTCARD
  208. )                        : HPROGRAM;
  209.  
  210. PROCEDURE PrfDestroyGroup
  211. ( IniHandle              : HINI;
  212.   ProgGroupHandle        : HPROGRAM
  213. )                        : BOOLEAN;
  214.  
  215. PROCEDURE PrfQueryProgramCategory
  216. ( IniHandle              : HINI;
  217.   VAR Exe                : ARRAY OF CHAR
  218. )                        : PROGCATEGORY;
  219.  
  220. PROCEDURE WinStartApp
  221. ( NotifyWinHandle        : HWND;
  222.   VAR Details            : PROGDETAILS;
  223.   Params                 : PSZ;
  224.   Reserved               : SYSTEM.ADDRESS;
  225.   Options                : LONGCARD
  226. )                        : HAPP;
  227.  
  228. CONST (* bit values for Options parameter *)
  229.   SAF_VALIDFLAGS         = 001FH;
  230.   SAF_INSTALLEDCMDLINE   = 0001H; (* use installed parameters *)
  231.   SAF_STARTCHILDAPP      = 0002H; (* related application      *)
  232.   SAF_MAXIMIZED          = 0004H; (* Start App maximized *)
  233.   SAF_MINIMIZED          = 0008H; (* Start App minimized, if !SAF_MAXIMIZED *)
  234.   SAF_BACKGROUND         = 0010H; (* Start app in the background *)
  235.  
  236. PROCEDURE WinTerminateApp
  237. ( AppHandle              : HAPP
  238. )                        : BOOLEAN;
  239.  
  240.  
  241. END WINPROGRAMLIST.
  242.