|
|
1.1 root 1: /******************************************************************************\
2: *
3: * Copyright (c) IBM Corporation 1987, 1989
4: * Copyright (c) MicroSoft Corporation 1987,1989
5: *
6: * Module Name: PMSHL.H
7: *
8: * OS/2 Presentation Manager Shell constants, types, messages and
9: * function declarations
10: *
11: *
12: * =============================================================================
13: *
14: * The following symbols are used in this file for conditional sections.
15: *
16: * INCL_WINSHELLDATA Include Presentation Manager profile calls
17: * INCL_SHLERRORS defined if INCL_ERRORS is defined
18: * INCL_WINSWITCHLIST Include Switch List Calls
19: * INCL_WINPROGRAMLIST Include Program List Calls
20: *
21: \******************************************************************************/
22:
23: #if !(defined(INCL_32) || defined(INCL_16))
24: #ifdef M_I386
25: #define INCL_32
26: #else /* not M_I386 */
27: #define INCL_16
28: #endif /* M_I386 */
29: #endif /* INCL_32 || INCL_16 */
30:
31: /* note the ifdef SESMGR is for the Boca build. It should really be */
32: /* taken out in the final h file clear up. Paul. */
33:
34: #ifndef SESMGR
35:
36: /* common types, constants and function declarations */
37:
38: /* maximum title length */
39: #define MAXNAMEL 60
40:
41: /* window size structure */
42: typedef struct _XYWINSIZE { /* xywin */
43: SHORT x;
44: SHORT y;
45: SHORT cx;
46: SHORT cy;
47: USHORT fsWindow;
48: } XYWINSIZE;
49: typedef XYWINSIZE FAR *PXYWINSIZE;
50:
51: /* Definitions for fsWindow */
52: #define XYF_NOAUTOCLOSE 0x0008
53: #define XYF_MINIMIZED 0x0004
54: #define XYF_MAXIMIZED 0x0002
55: #define XYF_INVISIBLE 0x0001
56: #define XYF_NORMAL 0X0000
57:
58: /* program handle */
59: typedef LHANDLE HPROGRAM; /* hprog */
60: typedef HPROGRAM FAR * PHPROGRAM;
61:
62: /* ini file handle */
63: typedef LHANDLE HINI; /* hini */
64: typedef HINI FAR * PHINI;
65:
66:
67: #define HINI_PROFILE (HINI) NULL
68: #define HINI_USERPROFILE (HINI) -1L
69: #define HINI_SYSTEMPROFILE (HINI) -2L
70:
71: #define HINI_USER HINI_USERPROFILE
72: #define HINI_SYSTEM HINI_SYSTEMPROFILE
73:
74:
75: typedef struct _PRFPROFILE { /* prfpro */
76: ULONG cchUserName;
77: PSZ pszUserName;
78: ULONG cchSysName;
79: PSZ pszSysName;
80: } PRFPROFILE;
81:
82: typedef PRFPROFILE FAR *PPRFPROFILE;
83:
84: #endif /* end #ifndef SESMGR */
85:
86: #ifdef INCL_WINPROGRAMLIST
87:
88: #ifndef SESMGR
89:
90: /* maximum path length */
91: #define MAXPATHL 128
92:
93: /* root group handle */
94: #define SGH_ROOT (HPROGRAM) -1L
95:
96: typedef struct _HPROGARRAY { /* hpga */
97: HPROGRAM ahprog[1];
98: } HPROGARRAY;
99: typedef HPROGARRAY FAR *PHPROGARRAY;
100:
101: #endif /* end of #ifndef SESMGR */
102:
103: typedef char PROGCATEGORY; /* progc */
104: typedef PROGCATEGORY FAR *PPROGCATEGORY;
105:
106: /* values acceptable for PROGCATEGORY for PM groups */
107: #define PROG_DEFAULT (PROGCATEGORY)0
108: #define PROG_FULLSCREEN (PROGCATEGORY)1
109: #define PROG_WINDOWABLEVIO (PROGCATEGORY)2
110: #define PROG_PM (PROGCATEGORY)3
111: #define PROG_GROUP (PROGCATEGORY)5
112: #define PROG_REAL (PROGCATEGORY)4
113: #define PROG_VDM (PROGCATEGORY)4
114: #define PROG_WINDOWEDVDM (PROGCATEGORY)7
115: #define PROG_DLL (PROGCATEGORY)6
116: #define PROG_PDD (PROGCATEGORY)8
117: #define PROG_VDD (PROGCATEGORY)9
118: #define PROG_RESERVED (PROGCATEGORY)255
119:
120: #ifndef SESMGR
121:
122: /* visibility flag for PROGTYPE structure */
123: #define SHE_VISIBLE (BYTE)0x00
124: #define SHE_INVISIBLE (BYTE)0x01
125: #define SHE_RESERVED (BYTE)0xFF
126:
127: /* Protected group flag for PROGTYPE structure */
128: #define SHE_UNPROTECTED (BYTE)0x00
129: #define SHE_PROTECTED (BYTE)0x02
130:
131: typedef struct _PROGTYPE { /* progt */
132: PROGCATEGORY progc;
133: UCHAR fbVisible;
134: } PROGTYPE;
135: typedef PROGTYPE FAR *PPROGTYPE;
136:
137: typedef struct _PROGRAMENTRY { /* proge */
138: HPROGRAM hprog;
139: PROGTYPE progt;
140: CHAR szTitle[MAXNAMEL+1];
141: } PROGRAMENTRY;
142: typedef PROGRAMENTRY FAR *PPROGRAMENTRY;
143:
144: typedef struct _PIBSTRUCT { /* pib */
145: PROGTYPE progt;
146: CHAR szTitle[MAXNAMEL+1];
147: CHAR szIconFileName[MAXPATHL+1];
148: CHAR szExecutable[MAXPATHL+1];
149: CHAR szStartupDir[MAXPATHL+1];
150: XYWINSIZE xywinInitial;
151: USHORT res1;
152: LHANDLE res2;
153: USHORT cchEnvironmentVars;
154: PCH pchEnvironmentVars;
155: USHORT cchProgramParameter;
156: PCH pchProgramParameter;
157: } PIBSTRUCT;
158: typedef PIBSTRUCT FAR *PPIBSTRUCT;
159:
160: /******************************************************************************/
161: /* */
162: /* Structures associated with 'Prf' calls */
163: /* */
164: /******************************************************************************/
165:
166: typedef struct _PROGDETAILS { /* progde */
167: ULONG Length; /* set this to sizeof(PROGDETAILS) */
168: PROGTYPE progt;
169: USHORT pad1[3]; /* ready for 32-bit PROGTYPE */
170: PSZ pszTitle; /* any of the pointers can be NULL */
171: PSZ pszExecutable;
172: PSZ pszParameters;
173: PSZ pszStartupDir;
174: PSZ pszIcon;
175: PSZ pszEnvironment; /* this is terminated by /0/0 */
176: SWP swpInitial; /* this replaces XYWINSIZE */
177: USHORT pad2[5]; /* ready for 32-bit SWP */
178: } PROGDETAILS;
179:
180: typedef PROGDETAILS FAR *PPROGDETAILS;
181:
182: typedef struct _PROGTITLE { /* progti */
183: HPROGRAM hprog;
184: PROGTYPE progt;
185: USHORT pad1[3]; /* padding ready for 32-bit PROGTYPE */
186: PSZ pszTitle;
187: } PROGTITLE;
188:
189: typedef PROGTITLE FAR *PPROGTITLE;
190:
191: typedef struct _QFEOUTBLK { /* qfeout */
192: USHORT Total;
193: USHORT Count;
194: HPROGRAM ProgramArr[1];
195: } QFEOUTBLK;
196: typedef QFEOUTBLK FAR *PQFEOUTBLK;
197:
198: /* Program List API Function Definitions */
199:
200: /*** Program Use */
201:
202: /* XLATOFF */
203: #ifdef INCL_16
204: #define WinQueryProgramTitles Win16QueryProgramTitles
205: #define WinAddProgram Win16AddProgram
206: #define WinQueryDefinition Win16QueryDefinition
207: #define WinCreateGroup Win16CreateGroup
208: #define PrfQueryProgramTitles Prf16QueryProgramTitles
209: #define PrfAddProgram Prf16AddProgram
210: #define PrfChangeProgram Prf16ChangeProgram
211: #define PrfQueryDefinition Prf16QueryDefinition
212: #define PrfRemoveProgram Prf16RemoveProgram
213: #define PrfQueryProgramHandle Prf16QueryProgramHandle
214: #define PrfCreateGroup Prf16CreateGroup
215: #define PrfDestroyGroup Prf16DestroyGroup
216: #define PrfQueryProgramCategory Prf16QueryProgramCategory
217: #endif /* INCL_16 */
218: /* XLATON */
219:
220: #ifndef INCL_32
221:
222: BOOL APIENTRY WinQueryProgramTitles(HAB hab, HPROGRAM hprogGroup
223: , PPROGRAMENTRY aprogeBuffer
224: , USHORT usBufferLen, PUSHORT pusTotal);
225:
226: /*** Single Program Manipulation */
227: HPROGRAM APIENTRY WinAddProgram(HAB hab, PPIBSTRUCT ppibProgramInfo
228: , HPROGRAM hprogGroupHandle);
229:
230: USHORT APIENTRY WinQueryDefinition(HAB hab, HPROGRAM hprogProgHandle
231: , PPIBSTRUCT ppibProgramInfo
232: , USHORT usMaxLength);
233:
234: /*** Group Manipulation */
235: HPROGRAM APIENTRY WinCreateGroup(HAB hab, PSZ pszTitle , UCHAR ucVisibility
236: , ULONG flres1, ULONG flres2);
237:
238: /******************************************************************************/
239: /* */
240: /* Program List API available 'Prf' calls */
241: /* */
242: /******************************************************************************/
243:
244: ULONG APIENTRY PrfQueryProgramTitles(HINI hini, HPROGRAM hprogGroup
245: , PPROGTITLE pTitles, ULONG cchBufferMax, PULONG pulCount);
246:
247: /*****************************************************************************/
248: /* */
249: /* NOTE: string information is concatanated after the array of PROGTITLE */
250: /* structures so you need to allocate storage greater than */
251: /* sizeof(PROGTITLE)*cPrograms to query programs in a group */
252: /* */
253: /* PrfQueryProgramTitles recommended usage to obtain titles of all progams */
254: /* in a group (Hgroup=SGH_ROOT is for all groups): */
255: /* */
256: /* BufLen = PrfQueryProgramTitles( Hini, Hgroup */
257: /* , (PPROGTITLE)NULL, 0, &Count); */
258: /* */
259: /* Alocate buffer of Buflen */
260: /* */
261: /* Len = PrfQueryProgramTitles( Hini, Hgroup, (PPROGTITLE)pBuffer, BufLen */
262: /* , pCount); */
263: /* */
264: /*****************************************************************************/
265:
266: HPROGRAM APIENTRY PrfAddProgram
267: (HINI hini, PPROGDETAILS pDetails, HPROGRAM hprogGroup);
268: BOOL APIENTRY PrfChangeProgram
269: (HINI hini, HPROGRAM hprog, PPROGDETAILS pDetails);
270:
271: /***************************************************************************/
272: /* when adding/changing programs the PROGDETAILS Length field should be */
273: /* set to sizeof(PROGDETAILS) */
274: /***************************************************************************/
275:
276: ULONG APIENTRY PrfQueryDefinition
277: (HINI hini, HPROGRAM hprog, PPROGDETAILS pDetails, ULONG cchBufferMax);
278:
279: /*****************************************************************************/
280: /* */
281: /* NOTE: string information is concatanated after the PROGDETAILS field */
282: /* structure so you need to allocate storage greater than */
283: /* sizeof(PROGDETAILS) to query programs */
284: /* */
285: /* PrfQueryDefinition recomended usage: */
286: /* */
287: /* bufferlen = PrfQueryDefinition( Hini, Hprog, (PPROGDETAILS)NULL, 0) */
288: /* */
289: /* Alocate buffer of bufferlen bytes */
290: /* set Length field (0 will be supported) */
291: /* */
292: /* (PPROGDETAILS)pBuffer->Length=sizeof(PPROGDETAILS) */
293: /* */
294: /* len = PrfQueryDefinition(Hini, Hprog, (PPROGDETAILS)pBuffer, bufferlen) */
295: /* */
296: /*****************************************************************************/
297:
298: BOOL APIENTRY PrfRemoveProgram(HINI hini,HPROGRAM hprog);
299: ULONG APIENTRY PrfQueryProgramHandle (HINI hini,PSZ pszExe
300: ,PHPROGARRAY phprogArray, ULONG cchBufferMax,PULONG pulCount);
301: HPROGRAM APIENTRY PrfCreateGroup (HINI hini, PSZ pszTitle, UCHAR chVisibility);
302: BOOL APIENTRY PrfDestroyGroup(HINI hini,HPROGRAM hprogGroup);
303: PROGCATEGORY APIENTRY PrfQueryProgramCategory(HINI hini, PSZ pszExe);
304:
305: #endif /* ifndef INCL_32 */
306:
307: #endif /* of #ifndef SESMGR */
308:
309: #endif /* INCL_WINPROGRAMLIST */
310:
311: #ifndef SESMGR
312:
313: #if (defined(INCL_WINSWITCHLIST) || !defined(INCL_NOCOMMON))
314:
315: typedef LHANDLE HSWITCH; /* hsw */
316: typedef HSWITCH FAR *PHSWITCH;
317:
318: /* visibility flag for SWCNTRL structure */
319: #define SWL_VISIBLE (BYTE)0x04
320: #define SWL_INVISIBLE (BYTE)0x01
321: #define SWL_GRAYED (BYTE)0x02
322:
323: /* visibility flag for SWCNTRL structure */
324: #define SWL_JUMPABLE (BYTE)0x02
325: #define SWL_NOTJUMPABLE (BYTE)0x01
326:
327: typedef struct _SWCNTRL { /* swctl */
328: HWND hwnd;
329: HWND hwndIcon;
330: HPROGRAM hprog;
331: PID idProcess;
332: USHORT idSession;
333: UCHAR uchVisibility;
334: UCHAR fbJump;
335: CHAR szSwtitle[MAXNAMEL+1];
336: BYTE bProgType;
337: } SWCNTRL;
338: typedef SWCNTRL FAR *PSWCNTRL;
339:
340: /* XLATOFF */
341: #ifdef INCL_16
342: #define WinAddSwitchEntry Win16AddSwitchEntry
343: #define WinRemoveSwitchEntry Win16RemoveSwitchEntry
344: #endif /* INCL_16 */
345: /* XLATON */
346:
347: /*** Switching Program functions */
348: HSWITCH APIENTRY WinAddSwitchEntry( PSWCNTRL );
349: USHORT APIENTRY WinRemoveSwitchEntry( HSWITCH );
350:
351: #endif /* not INCL_NOCOMMON */
352:
353: #ifdef INCL_WINSWITCHLIST
354:
355: typedef struct _SWENTRY { /* swent */
356: HSWITCH hswitch;
357: SWCNTRL swctl;
358: } SWENTRY;
359: typedef SWENTRY FAR *PSWENTRY;
360:
361: typedef struct _SWBLOCK { /* swblk */
362: USHORT cswentry;
363: SWENTRY aswentry[1];
364: } SWBLOCK;
365: typedef SWBLOCK FAR *PSWBLOCK;
366:
367: /* XLATOFF */
368: #ifdef INCL_16
369: #define WinChangeSwitchEntry Win16ChangeSwitchEntry
370: #define WinCreateSwitchEntry Win16CreateSwitchEntry
371: #define WinQuerySessionTitle Win16QuerySessionTitle
372: #define WinQuerySwitchEntry Win16QuerySwitchEntry
373: #define WinQuerySwitchHandle Win16QuerySwitchHandle
374: #define WinQuerySwitchList Win16QuerySwitchList
375: #define WinQueryTaskSizePos Win16QueryTaskSizePos
376: #define WinQueryTaskTitle Win16QueryTaskTitle
377: #define WinSwitchToProgram Win16SwitchToProgram
378: #endif /* INCL_16 */
379: /* XLATON */
380:
381: USHORT APIENTRY WinChangeSwitchEntry( HSWITCH hswitchSwitch
382: , PSWCNTRL pswctlSwitchData);
383: HSWITCH APIENTRY WinCreateSwitchEntry( HAB, PSWCNTRL );
384: USHORT APIENTRY WinQuerySessionTitle( HAB hab, USHORT usSession
385: , PSZ pszTitle, USHORT usTitlelen);
386: USHORT APIENTRY WinQuerySwitchEntry( HSWITCH hswitchSwitch
387: , PSWCNTRL pswctlSwitchData);
388: HSWITCH APIENTRY WinQuerySwitchHandle( HWND hwnd, PID pidProcess);
389: USHORT APIENTRY WinQuerySwitchList( HAB hab, PSWBLOCK pswblkSwitchEntries
390: , USHORT usDataLength);
391: USHORT APIENTRY WinQueryTaskSizePos( HAB hab, USHORT usScreenGroup
392: , PSWP pswpPositionData);
393: USHORT APIENTRY WinQueryTaskTitle( USHORT usSession, PSZ pszTitle
394: , USHORT usTitlelen);
395: USHORT APIENTRY WinSwitchToProgram( HSWITCH hswitchSwHandle);
396:
397: #endif
398:
399: /* if error definitions are required then allow Shell errors */
400: #ifdef INCL_ERRORS
401: #define INCL_SHLERRORS
402: #endif /* INCL_ERRORS */
403:
404: #ifdef INCL_WINSHELLDATA
405:
406: /* XLATOFF */
407: #ifdef INCL_16
408: #define WinQueryProfileInt Win16QueryProfileInt
409: #define WinQueryProfileString Win16QueryProfileString
410: #define WinWriteProfileString Win16WriteProfileString
411: #define WinQueryProfileSize Win16QueryProfileSize
412: #define WinQueryProfileData Win16QueryProfileData
413: #define WinWriteProfileData Win16WriteProfileData
414: #define PrfQueryProfileInt Prf16QueryProfileInt
415: #define PrfQueryProfileString Prf16QueryProfileString
416: #define PrfWriteProfileString Prf16WriteProfileString
417: #define PrfQueryProfileSize Prf16QueryProfileSize
418: #define PrfQueryProfileData Prf16QueryProfileData
419: #define PrfWriteProfileData Prf16WriteProfileData
420: #define PrfOpenProfile Prf16OpenProfile
421: #define PrfCloseProfile Prf16CloseProfile
422: #define PrfReset Prf16Reset
423: #define PrfQueryProfile Prf16QueryProfile
424: #endif /* INCL_16 */
425: /* XLATON */
426:
427: #ifndef INCL_32
428:
429: /*** OS2.INI Access functions */
430: SHORT APIENTRY WinQueryProfileInt( HAB hab, PSZ pszAppName
431: , PSZ pszKeyName, SHORT sDefault);
432: USHORT APIENTRY WinQueryProfileString( HAB hab, PSZ pszAppName, PSZ pszKeyName
433: , PSZ pszDefault, PVOID pProfileString
434: , USHORT usMaxPstring);
435: BOOL APIENTRY WinWriteProfileString( HAB hab, PSZ pszAppName, PSZ pszKeyName
436: , PSZ pszValue);
437: USHORT APIENTRY WinQueryProfileSize( HAB hab, PSZ pszAppName, PSZ pszKeyName
438: , PUSHORT pusValue);
439: BOOL APIENTRY WinQueryProfileData( HAB hab, PSZ pszAppName, PSZ pszKeyName
440: , PVOID pValue, PUSHORT pusSize);
441: BOOL APIENTRY WinWriteProfileData( HAB hab, PSZ pszAppName, PSZ pszKeyName
442: , PVOID pValue, USHORT usSize);
443:
444: #endif /* ifndef INCL_32 */
445:
446: /******************************************************************************/
447: /* */
448: /* INI file access API available calls 'Prf' */
449: /* */
450: /******************************************************************************/
451:
452: SHORT APIENTRY PrfQueryProfileInt(HINI hini,PSZ pszApp,PSZ pszKey
453: ,SHORT sDefault);
454: ULONG APIENTRY PrfQueryProfileString(HINI hini,PSZ pszApp, PSZ pszKey
455: ,PSZ pszDefault, PVOID pBuffer, ULONG cchBufferMax);
456: BOOL APIENTRY PrfWriteProfileString
457: (HINI hini,PSZ pszApp, PSZ pszKey , PSZ pszData);
458: BOOL APIENTRY PrfQueryProfileSize
459: (HINI hini,PSZ pszApp, PSZ pszKey ,PULONG pulReqLen);
460: BOOL APIENTRY PrfQueryProfileData
461: (HINI hini, PSZ pszApp, PSZ pszKey, PVOID pBuffer, PULONG pulBuffLen);
462:
463: BOOL APIENTRY PrfWriteProfileData
464: (HINI hini, PSZ pszApp,PSZ pszKey,PVOID pData, ULONG cchDataLen);
465:
466: HINI APIENTRY PrfOpenProfile(HAB hab, PSZ pszFileName);
467: BOOL APIENTRY PrfCloseProfile(HINI hini);
468: BOOL APIENTRY PrfReset(HAB hab, PPRFPROFILE pPrfProfile);
469: BOOL APIENTRY PrfQueryProfile(HAB hab, PPRFPROFILE pPrfProfile);
470:
471: /* new public message, broadcast on WinReset */
472: #define PL_ALTERED 0x008E /* WM_SHELLFIRST + 0E */
473:
474:
475: #endif /* INCL_WINSHELLDATA */
476:
477: #ifdef INCL_SHLERRORS
478:
479: #include <pmerr.h>
480:
481: #endif /* INCL_SHLERRORS */
482:
483: typedef LHANDLE HAPP;
484:
485: /* XLATOFF */
486: #ifdef INCL_16
487: #define WinInstStartApp Win16InstStartApp
488: #define WinTerminateApp Win16TerminateApp
489: #endif /* INCL_16 */
490: /* XLATON */
491:
492: #ifndef INCL_32
493:
494: HAPP APIENTRY WinInstStartApp( HINI hini, HWND hwndNotifyWindow,
495: USHORT cCount, PSZ FAR * aszApplication,
496: PSZ pszCmdLine, PVOID pData, USHORT fsOptions );
497:
498: BOOL APIENTRY WinTerminateApp( HAPP happ );
499:
500: #endif /* ifndef INCL_32 */
501:
502: /* bit values for Options parameter of WinInstStartAppl */
503: #define SAF_INSTALLEDCMDLINE 0x0001 /* use installed parameters */
504: #define SAF_STARTCHILDAPP 0x0002 /* related application */
505:
506: #endif /* of #ifndef SESMGR */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.