WinWaitForShell: Difference between revisions
No edit summary |
mNo edit summary |
||
Line 8: | Line 8: | ||
Constants defined for event: | Constants defined for event: | ||
* [[WWFS|WWFS_QUERY]] - Query if the event has taken place. If this flag is not turned on then this call will block until the event has taken place. | * [[WWFS|WWFS_QUERY]] - Query if the event has taken place. If this flag is not turned on then this call will block until the event has taken place. | ||
* [[WWFS|WWFS_DESKTOPCREATED]] - Desktop has been created. | * [[WWFS|WWFS_DESKTOPCREATED]] - Desktop has been created. | ||
* [[WWFS|WWFS_DESKTOPOPENED]] - A view of the Desktop has been opened. | * [[WWFS|WWFS_DESKTOPOPENED]] - A view of the Desktop has been opened. | ||
Line 18: | Line 18: | ||
*[[FALSE]] - Event has not taken place. | *[[FALSE]] - Event has not taken place. | ||
*PMERR_INVALID_PARAMETER (0x1208) - One of the defined WWFS_DESKTOP* flags was not passed in ulEvent. | *PMERR_INVALID_PARAMETER (0x1208) - One of the defined WWFS_DESKTOP* flags was not passed in ulEvent. | ||
== Export name/Ordinal == | == Export name/Ordinal == | ||
Line 27: | Line 24: | ||
== Calling Convention == | == Calling Convention == | ||
[[Cdecl32]] | [[Cdecl32]] | ||
== Notes == | == Notes == | ||
Line 52: | Line 40: | ||
\\SEM32\\WORKPLAC\\SHELL2WT.SEM | \\SEM32\\WORKPLAC\\SHELL2WT.SEM | ||
\\SEM32\\WORKPLAC\\SHELL3WT.SEM | \\SEM32\\WORKPLAC\\SHELL3WT.SEM | ||
Each according to the three [[WWFS|WWFS-constants]]. Calling '''WinWaitForShell''' before the second instance of PMShell is started is valid as long as the [[WWFS|WWFS_QUERY]] bit is specified. | Each according to the three [[WWFS|WWFS-constants]]. Calling '''WinWaitForShell''' before the second instance of PMShell is started is valid as long as the [[WWFS|WWFS_QUERY]] bit is specified. | ||
Line 59: | Line 46: | ||
==Example Code== | ==Example Code== | ||
This example checks (non-blocking) to see if the Workplace Shell Desktop to be populated has been populated or not. | This example checks (non-blocking) to see if the Workplace Shell Desktop to be populated has been populated or not. | ||
< | <code> | ||
#define | #define INCL_WINWORKPLACE | ||
#include <os2.h> | #include <os2.h> | ||
BOOL fOccurred; | BOOL fOccurred; | ||
fOccurred + WinWaitForShell(WWFS_DESKTOPPOPULATED | WWFS_QUERY); | fOccurred + WinWaitForShell(WWFS_DESKTOPPOPULATED | WWFS_QUERY); | ||
if (fOccurred) | if (fOccurred) | ||
{ | { | ||
/* The Desktop has been populated */ | /* The Desktop has been populated */ | ||
} | } | ||
else | else | ||
{ | { | ||
/* The Desktop has not been populated */ | /* The Desktop has not been populated */ | ||
</ | </code> | ||
==Related Functions== | |||
*WinNotebookButtonFromID | |||
[[Category:Win]] | [[Category:Win]] |
Revision as of 20:31, 3 June 2018
Allows an application to wait for the Workplace Shell to become available.
Syntax
WinWaitForShell (ulEvent)
Parameters
- ulEvent (ULONG) input
- ulEvent has the following flags which indicate which event is to be queried. One, and only one, of these flags must be turned on.
Constants defined for event:
- WWFS_QUERY - Query if the event has taken place. If this flag is not turned on then this call will block until the event has taken place.
- WWFS_DESKTOPCREATED - Desktop has been created.
- WWFS_DESKTOPOPENED - A view of the Desktop has been opened.
- WWFS_DESKTOPPOPULATED - The desktop has been populated.
Returns
Returns BOOL with the values of:
- TRUE - Event has taken place.
- FALSE - Event has not taken place.
- PMERR_INVALID_PARAMETER (0x1208) - One of the defined WWFS_DESKTOP* flags was not passed in ulEvent.
Export name/Ordinal
Exported as ordinal 512 from PMWP.DLL.
Calling Convention
Notes
When calling WinWaitForShell from processes started by a RUN= statement in config.sys, you must specify the WWFS_QUERY flag. Else the call will fail.
A message queue is not required for the thread which calls WinWaitForShell.
The prototype and defines for this function are defined in wpobject.h, which may be inaccessible if not compiling a WPS object class. Copy the defines and the prototype verbatim into your own code or headers for use. It is exported through os2386.lib in the OS/2 Warp 4 Toolkit.
OS Version Introduced
OS/2 Warp 4
Implementation details
This function queries or waits for three event semaphores created by WinStartShell during WPS bootup. These events are:
\\SEM32\\WORKPLAC\\SHELL1WT.SEM \\SEM32\\WORKPLAC\\SHELL2WT.SEM \\SEM32\\WORKPLAC\\SHELL3WT.SEM
Each according to the three WWFS-constants. Calling WinWaitForShell before the second instance of PMShell is started is valid as long as the WWFS_QUERY bit is specified.
Once posted, the events are not reset again, so to be able to wait for the shell to come back up after resetting it programmatically, the events must be reset by the calling process. Reset the events right before killing WPS, not before calling WinWaitForShell.
Example Code
This example checks (non-blocking) to see if the Workplace Shell Desktop to be populated has been populated or not.
#define INCL_WINWORKPLACE
#include <os2.h>
BOOL fOccurred;
fOccurred + WinWaitForShell(WWFS_DESKTOPPOPULATED | WWFS_QUERY);
if (fOccurred)
{
/* The Desktop has been populated */
}
else
{
/* The Desktop has not been populated */
Related Functions
- WinNotebookButtonFromID