mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
402 lines
16 KiB
402 lines
16 KiB
/******************************************************************************\
|
|
*
|
|
* Module Name: PMSHL.H
|
|
*
|
|
* OS/2 Presentation Manager Shell constants, types, messages and
|
|
* function declarations
|
|
*
|
|
* Copyright (c) International Business Machines Corporation 1981, 1988, 1989
|
|
* Copyright (c) Microsoft Corporation 1981, 1988, 1989
|
|
*
|
|
* =============================================================================
|
|
*
|
|
* The following symbols are used in this file for conditional sections.
|
|
*
|
|
* INCL_WINSHELLDATA Include Presentation Manager profile calls
|
|
* INCL_SHLERRORS defined if INCL_ERRORS is defined
|
|
* INCL_WINSWITCHLIST Include Switch List Calls
|
|
* INCL_WINPROGRAMLIST Include Program List Calls
|
|
*
|
|
\******************************************************************************/
|
|
|
|
|
|
/* common types, constants and function declarations */
|
|
|
|
/* maximum title length */
|
|
#define MAXNAMEL 60
|
|
|
|
/* window size structure */
|
|
typedef struct _XYWINSIZE { /* xywin */
|
|
SHORT x;
|
|
SHORT y;
|
|
SHORT cx;
|
|
SHORT cy;
|
|
USHORT fsWindow;
|
|
} XYWINSIZE;
|
|
typedef XYWINSIZE FAR *PXYWINSIZE;
|
|
|
|
/* Definitions for fsWindow */
|
|
#define XYF_NOAUTOCLOSE 0x0008
|
|
#define XYF_MINIMIZED 0x0004 /* D23914 */
|
|
#define XYF_MAXIMIZED 0x0002 /* D23914 */
|
|
#define XYF_INVISIBLE 0x0001
|
|
#define XYF_NORMAL 0X0000
|
|
|
|
/* program handle */
|
|
typedef LHANDLE HPROGRAM; /* hprog */
|
|
typedef HPROGRAM FAR * PHPROGRAM;
|
|
|
|
/* ini file handle */
|
|
typedef LHANDLE HINI; /* hini */
|
|
typedef HINI FAR * PHINI;
|
|
|
|
|
|
#define HINI_PROFILE (HINI) NULL
|
|
#define HINI_USERPROFILE (HINI) -1L
|
|
#define HINI_SYSTEMPROFILE (HINI) -2L
|
|
|
|
#define HINI_USER HINI_USERPROFILE
|
|
#define HINI_SYSTEM HINI_SYSTEMPROFILE
|
|
|
|
|
|
typedef struct _PRFPROFILE { /* prfpro */
|
|
ULONG cchUserName;
|
|
PSZ pszUserName;
|
|
ULONG cchSysName;
|
|
PSZ pszSysName;
|
|
} PRFPROFILE;
|
|
|
|
typedef PRFPROFILE FAR *PPRFPROFILE;
|
|
|
|
#ifdef INCL_WINPROGRAMLIST
|
|
/* maximum path length */
|
|
#define MAXPATHL 128
|
|
|
|
/* root group handle */
|
|
#define SGH_ROOT (HPROGRAM) -1L
|
|
|
|
typedef struct _HPROGARRAY { /* hpga */
|
|
HPROGRAM ahprog[1];
|
|
} HPROGARRAY;
|
|
typedef HPROGARRAY FAR *PHPROGARRAY;
|
|
|
|
typedef CHAR PROGCATEGORY; /* progc */
|
|
typedef PROGCATEGORY FAR *PPROGCATEGORY;
|
|
|
|
/* values acceptable for PROGCATEGORY for PM groups */
|
|
#define PROG_DEFAULT (PROGCATEGORY)0
|
|
#define PROG_FULLSCREEN (PROGCATEGORY)1
|
|
#define PROG_WINDOWABLEVIO (PROGCATEGORY)2
|
|
#define PROG_PM (PROGCATEGORY)3
|
|
#define PROG_GROUP (PROGCATEGORY)5
|
|
#define PROG_REAL (PROGCATEGORY)4 /* was 7 */
|
|
#define PROG_DLL (PROGCATEGORY)6
|
|
#define PROG_RESERVED (PROGCATEGORY)255
|
|
|
|
/* visibility flag for PROGTYPE structure */
|
|
#define SHE_VISIBLE (BYTE)0x00
|
|
#define SHE_INVISIBLE (BYTE)0x01
|
|
#define SHE_RESERVED (BYTE)0xFF
|
|
|
|
/* Protected group flag for PROGTYPE structure */
|
|
#define SHE_UNPROTECTED (BYTE)0x00
|
|
#define SHE_PROTECTED (BYTE)0x02
|
|
|
|
typedef struct _PROGTYPE { /* progt */
|
|
PROGCATEGORY progc;
|
|
UCHAR fbVisible;
|
|
} PROGTYPE;
|
|
typedef PROGTYPE FAR *PPROGTYPE;
|
|
|
|
typedef struct _PROGRAMENTRY { /* proge */
|
|
HPROGRAM hprog;
|
|
PROGTYPE progt;
|
|
CHAR szTitle[MAXNAMEL+1];
|
|
} PROGRAMENTRY;
|
|
typedef PROGRAMENTRY FAR *PPROGRAMENTRY;
|
|
|
|
typedef struct _PIBSTRUCT { /* pib */
|
|
PROGTYPE progt;
|
|
CHAR szTitle[MAXNAMEL+1];
|
|
CHAR szIconFileName[MAXPATHL+1];
|
|
CHAR szExecutable[MAXPATHL+1];
|
|
CHAR szStartupDir[MAXPATHL+1];
|
|
XYWINSIZE xywinInitial;
|
|
USHORT res1;
|
|
LHANDLE res2;
|
|
USHORT cchEnvironmentVars;
|
|
PCH pchEnvironmentVars;
|
|
USHORT cchProgramParameter;
|
|
PCH pchProgramParameter;
|
|
} PIBSTRUCT;
|
|
typedef PIBSTRUCT FAR *PPIBSTRUCT;
|
|
|
|
/******************************************************************************/
|
|
/* */
|
|
/* Structures associated with 'Prf' calls */
|
|
/* */
|
|
/******************************************************************************/
|
|
|
|
typedef struct _PROGDETAILS { /* progde */
|
|
ULONG Length; /* set this to sizeof(PROGDETAILS) */
|
|
PROGTYPE progt;
|
|
USHORT pad1[3]; /* ready for 32-bit PROGTYPE */
|
|
PSZ pszTitle; /* any of the pointers can be NULL */
|
|
PSZ pszExecutable;
|
|
PSZ pszParameters;
|
|
PSZ pszStartupDir;
|
|
PSZ pszIcon;
|
|
PSZ pszEnvironment; /* this is terminated by /0/0 */
|
|
SWP swpInitial; /* this replaces XYWINSIZE */
|
|
USHORT pad2[5]; /* ready for 32-bit SWP */
|
|
} PROGDETAILS;
|
|
|
|
typedef PROGDETAILS FAR *PPROGDETAILS;
|
|
|
|
typedef struct _PROGTITLE { /* progti */
|
|
HPROGRAM hprog;
|
|
PROGTYPE progt;
|
|
USHORT pad1[3]; /* padding ready for 32-bit PROGTYPE */
|
|
PSZ pszTitle;
|
|
} PROGTITLE;
|
|
|
|
typedef PROGTITLE FAR *PPROGTITLE;
|
|
|
|
typedef struct _QFEOUTBLK { /* qfeout */
|
|
USHORT Total;
|
|
USHORT Count;
|
|
HPROGRAM ProgramArr[1];
|
|
} QFEOUTBLK;
|
|
typedef QFEOUTBLK far *PQFEOUTBLK;
|
|
|
|
/* Program List API Function Definitions */
|
|
|
|
/*** Program Use */
|
|
|
|
BOOL APIENTRY WinQueryProgramTitles(HAB hab, HPROGRAM hprogGroup
|
|
, PPROGRAMENTRY aprogeBuffer
|
|
, USHORT usBufferLen, PUSHORT pusTotal);
|
|
|
|
/*** Single Program Manipulation */
|
|
HPROGRAM APIENTRY WinAddProgram(HAB hab, PPIBSTRUCT ppibProgramInfo
|
|
, HPROGRAM hprogGroupHandle);
|
|
|
|
USHORT APIENTRY WinQueryDefinition(HAB hab, HPROGRAM hprogProgHandle
|
|
, PPIBSTRUCT ppibProgramInfo
|
|
, USHORT usMaxLength);
|
|
|
|
/*** Group Manipulation */
|
|
HPROGRAM APIENTRY WinCreateGroup(HAB hab, PSZ pszTitle , UCHAR ucVisibility
|
|
, ULONG flres1, ULONG flres2);
|
|
/******************************************************************************/
|
|
/* */
|
|
/* Program List API available 'Prf' calls */
|
|
/* */
|
|
/******************************************************************************/
|
|
|
|
ULONG APIENTRY PrfQueryProgramTitles(HINI hini, HPROGRAM hprogGroup
|
|
, PPROGTITLE pTitles, ULONG cchBufferMax, PULONG pulCount);
|
|
|
|
/*****************************************************************************/
|
|
/* */
|
|
/* NOTE: string information is concatanated after the array of PROGTITLE */
|
|
/* structures so you need to allocate storage greater than */
|
|
/* sizeof(PROGTITLE)*cPrograms to query programs in a group */
|
|
/* */
|
|
/* PrfQueryProgramTitles recommended usage to obtain titles of all progams */
|
|
/* in a group (Hgroup=SGH_ROOT is for all groups): */
|
|
/* */
|
|
/* BufLen = PrfQueryProgramTitles( Hini, Hgroup */
|
|
/* , (PPROGTITLE)NULL, 0, &Count); */
|
|
/* */
|
|
/* Alocate buffer of Buflen */
|
|
/* */
|
|
/* Len = PrfQueryProgramTitles( Hini, Hgroup, (PPROGTITLE)pBuffer, BufLen */
|
|
/* , pCount); */
|
|
/* */
|
|
/*****************************************************************************/
|
|
|
|
HPROGRAM APIENTRY PrfAddProgram
|
|
(HINI hini, PPROGDETAILS pDetails, HPROGRAM hprogGroup);
|
|
BOOL APIENTRY PrfChangeProgram
|
|
(HINI hini, HPROGRAM hprog, PPROGDETAILS pDetails);
|
|
|
|
/***************************************************************************/
|
|
/* when adding/changing programs the PROGDETAILS Length field should be */
|
|
/* set to sizeof(PROGDETAILS) */
|
|
/***************************************************************************/
|
|
|
|
ULONG APIENTRY PrfQueryDefinition
|
|
(HINI hini, HPROGRAM hprog, PPROGDETAILS pDetails, ULONG cchBufferMax);
|
|
|
|
/*****************************************************************************/
|
|
/* */
|
|
/* NOTE: string information is concatanated after the PROGDETAILS field */
|
|
/* structure so you need to allocate storage greater than */
|
|
/* sizeof(PROGDETAILS) to query programs */
|
|
/* */
|
|
/* PrfQueryDefinition recomended usage: */
|
|
/* */
|
|
/* bufferlen = PrfQueryDefinition( Hini, Hprog, (PPROGDETAILS)NULL, 0) */
|
|
/* */
|
|
/* Alocate buffer of bufferlen bytes */
|
|
/* set Length field (0 will be supported) */
|
|
/* */
|
|
/* (PPROGDETAILS)pBuffer->Length=sizeof(PPROGDETAILS) */
|
|
/* */
|
|
/* len = PrfQueryDefinition(Hini, Hprog, (PPROGDETAILS)pBuffer, bufferlen) */
|
|
/* */
|
|
/*****************************************************************************/
|
|
|
|
BOOL APIENTRY PrfRemoveProgram(HINI hini,HPROGRAM hprog);
|
|
ULONG APIENTRY PrfQueryProgramHandle (HINI hini,PSZ pszExe
|
|
,PHPROGARRAY phprogArray, ULONG cchBufferMax,PULONG pulCount);
|
|
HPROGRAM APIENTRY PrfCreateGroup
|
|
(HINI hini, PSZ pszTitle, UCHAR chVisibility);
|
|
BOOL APIENTRY PrfDestroyGroup(HINI hini,HPROGRAM hprogGroup);
|
|
PROGCATEGORY APIENTRY PrfQueryProgramCategory(HINI hini, PSZ pszExe);
|
|
|
|
#endif /* INCL_WINPROGRAMLIST */
|
|
|
|
#if (defined(INCL_WINSWITCHLIST) || !defined(INCL_NOCOMMON))
|
|
|
|
typedef LHANDLE HSWITCH; /* hsw */
|
|
typedef HSWITCH FAR *PHSWITCH;
|
|
|
|
/* visibility flag for SWCNTRL structure */
|
|
#define SWL_VISIBLE (BYTE)0x04
|
|
#define SWL_INVISIBLE (BYTE)0x01
|
|
#define SWL_GRAYED (BYTE)0x02
|
|
|
|
/* visibility flag for SWCNTRL structure */
|
|
#define SWL_JUMPABLE (BYTE)0x02
|
|
#define SWL_NOTJUMPABLE (BYTE)0x01
|
|
|
|
typedef struct _SWCNTRL { /* swctl */
|
|
HWND hwnd;
|
|
HWND hwndIcon;
|
|
HPROGRAM hprog;
|
|
USHORT idProcess;
|
|
USHORT idSession;
|
|
UCHAR uchVisibility;
|
|
UCHAR fbJump;
|
|
CHAR szSwtitle[MAXNAMEL+1];
|
|
BYTE fReserved; /* To align on word boundary */
|
|
} SWCNTRL;
|
|
typedef SWCNTRL FAR *PSWCNTRL;
|
|
|
|
/*** Switching Program functions */
|
|
HSWITCH EXPENTRY WinAddSwitchEntry( PSWCNTRL );
|
|
USHORT EXPENTRY WinRemoveSwitchEntry( HSWITCH );
|
|
|
|
#endif /* not INCL_NOCOMMON */
|
|
|
|
#ifdef INCL_WINSWITCHLIST
|
|
|
|
typedef struct _SWENTRY { /* swent */
|
|
HSWITCH hswitch;
|
|
SWCNTRL swctl;
|
|
} SWENTRY;
|
|
typedef SWENTRY FAR *PSWENTRY;
|
|
|
|
typedef struct _SWBLOCK { /* swblk */
|
|
USHORT cswentry;
|
|
SWENTRY aswentry[1];
|
|
} SWBLOCK;
|
|
typedef SWBLOCK FAR *PSWBLOCK;
|
|
|
|
USHORT EXPENTRY WinChangeSwitchEntry( HSWITCH hswitchSwitch
|
|
, PSWCNTRL pswctlSwitchData);
|
|
HSWITCH EXPENTRY WinCreateSwitchEntry( HAB, PSWCNTRL );
|
|
USHORT EXPENTRY WinQuerySessionTitle( HAB hab, USHORT usSession
|
|
, PSZ pszTitle, USHORT usTitlelen);
|
|
USHORT EXPENTRY WinQuerySwitchEntry( HSWITCH hswitchSwitch
|
|
, PSWCNTRL pswctlSwitchData);
|
|
HSWITCH EXPENTRY WinQuerySwitchHandle( HWND hwnd, PID usProcess);
|
|
USHORT EXPENTRY WinQuerySwitchList( HAB hab, PSWBLOCK pswblkSwitchEntries
|
|
, USHORT usDataLength);
|
|
USHORT EXPENTRY WinQueryTaskSizePos( HAB hab, USHORT usScreenGroup
|
|
, PSWP pswpPositionData);
|
|
USHORT EXPENTRY WinQueryTaskTitle( USHORT usSession, PSZ pszTitle
|
|
, USHORT usTitlelen);
|
|
USHORT EXPENTRY WinSwitchToProgram( HSWITCH hswitchSwHandle);
|
|
|
|
#endif
|
|
|
|
/* if error definitions are required then allow Shell errors */
|
|
#ifdef INCL_ERRORS
|
|
#define INCL_SHLERRORS
|
|
#endif /* INCL_ERRORS */
|
|
|
|
#ifdef INCL_WINSHELLDATA
|
|
|
|
|
|
/*** OS2.INI Access functions */
|
|
SHORT APIENTRY WinQueryProfileInt( HAB hab, PSZ pszAppName
|
|
, PSZ pszKeyName, SHORT sDefault);
|
|
USHORT APIENTRY WinQueryProfileString( HAB hab, PSZ pszAppName, PSZ pszKeyName
|
|
, PSZ pszDefault, PVOID pProfileString
|
|
, USHORT usMaxPstring);
|
|
BOOL APIENTRY WinWriteProfileString( HAB hab, PSZ pszAppName, PSZ pszKeyName
|
|
, PSZ pszValue);
|
|
USHORT APIENTRY WinQueryProfileSize( HAB hab, PSZ pszAppName, PSZ pszKeyName
|
|
, PUSHORT pusValue);
|
|
BOOL APIENTRY WinQueryProfileData( HAB hab, PSZ pszAppName, PSZ pszKeyName
|
|
, PVOID pValue, PUSHORT pusSize);
|
|
BOOL APIENTRY WinWriteProfileData( HAB hab, PSZ pszAppName, PSZ pszKeyName
|
|
, PVOID pValue, USHORT usSize);
|
|
|
|
/******************************************************************************/
|
|
/* */
|
|
/* INI file access API available calls 'Prf' */
|
|
/* */
|
|
/******************************************************************************/
|
|
|
|
SHORT APIENTRY PrfQueryProfileInt(HINI hini,PSZ pszApp,PSZ pszKey
|
|
,SHORT sDefault);
|
|
ULONG APIENTRY PrfQueryProfileString(HINI hini,PSZ pszApp, PSZ pszKey
|
|
,PSZ pszDefault, PVOID pBuffer, ULONG cchBufferMax);
|
|
BOOL APIENTRY PrfWriteProfileString
|
|
(HINI hini,PSZ pszApp, PSZ pszKey , PSZ pszData);
|
|
BOOL APIENTRY PrfQueryProfileSize
|
|
(HINI hini,PSZ pszApp, PSZ pszKey ,PULONG pulReqLen);
|
|
BOOL APIENTRY PrfQueryProfileData
|
|
(HINI hini, PSZ pszApp, PSZ pszKey, PVOID pBuffer, PULONG pulBuffLen);
|
|
|
|
BOOL APIENTRY PrfWriteProfileData
|
|
(HINI hini, PSZ pszApp,PSZ pszKey,PVOID pData, ULONG cchDataLen);
|
|
|
|
HINI APIENTRY PrfOpenProfile(HAB hab, PSZ pszFileName);
|
|
BOOL APIENTRY PrfCloseProfile(HINI hini);
|
|
BOOL APIENTRY PrfReset(HAB hab, PPRFPROFILE pPrfProfile);
|
|
BOOL APIENTRY PrfQueryProfile(HAB hab, PPRFPROFILE pPrfProfile);
|
|
|
|
/* new public message, broadcast on WinReset */
|
|
#define PL_ALTERED 0x008E /* WM_SHELLFIRST + 0E */
|
|
|
|
|
|
#endif /* INCL_WINSHELLDATA */
|
|
|
|
#ifdef INCL_SHLERRORS
|
|
|
|
#include <pmerr.h>
|
|
|
|
#endif /* INCL_SHLERRORS */
|
|
|
|
typedef LHANDLE HAPP;
|
|
|
|
HAPP EXPENTRY WinInstStartApp( HINI hini, HWND hwndNotifyWindow,
|
|
USHORT cCount, PSZ far * aszApplication,
|
|
PSZ pszCmdLine, PVOID pData, USHORT fsOptions );
|
|
|
|
BOOL EXPENTRY WinTerminateApp( HAPP happ );
|
|
|
|
/* bit values for Options parameter of WinInstStartAppl */
|
|
#define SAF_VALIDFLAGS 0x001F
|
|
|
|
#define SAF_INSTALLEDCMDLINE 0x0001 /* use installed parameters */
|
|
#define SAF_STARTCHILDAPP 0x0002 /* related application */
|
|
#define SAF_MAXIMIZED 0x0004 /* Start App maximized */
|
|
#define SAF_MINIMIZED 0x0008 /* Start App minimized, if !SAF_MAXIMIZED */
|
|
#define SAF_BACKGROUND 0x0010 /* Start app in the background */
|
|
|