Jump to content

WinHSWITCHfromHAPP

From EDM2
Revision as of 15:23, 18 May 2025 by Martini (talk | contribs) (Martini moved page WinHSwitchFromHapp to WinHSWITCHfromHAPP over redirect)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

WinHSWITCHfromHAPP returns the handle of the switch list entry from the application handle. If the application handle is invalid or if no switch list entry exists, then 0 is returned.

Syntax

WinHSWITCHfromHAPP(HAPP happ)

Parameters

happ (HAPP) - input
Application handle.

Returns

hswitch (HSWITCH) - returns
Switch list handle.
NULLHANDLE: If the HAPP is invalid, the Switch List Entry is not defined for this HAPP, or an error occurred.
HSWITCH: The Handle of the Switch List Entry, if HAPP is valid and a Switch List Entry exists.

Remarks

WinHAPPfromPID and WinHSWITCHfromHAPP may be called from non-PM programs. For some versions of OS/2 it may be necessary to import explicitly these APIs using the following ordinals:

  • WinHAPPfromPID: PMMERGE.5198
  • WinHSWITCHfromHAPP: PMMERGE.5199

This function returns the system task list switch handle for an application, given that application's handle. In the case of WPS/SOM applications, however, the application handle is really the window handle, so please use that in those cases.

Prototype:

HSWITCH APIENTRY16 WinHSwitchFromHapp ( HAPP hApp ) ;

Linkage Definition:

IMPORTS WinHSwitchFromHapp = PMSHAPI.209


Example Code

Declaration:

#define INCL_PMAPI
#include <os2.h>

HSWITCH WinHSWITCHfromHAPP(HAPP happ)

Example:

int main (int argc, char *argv[], char *envp[])
{
   APIRET rc;
   HAPP happ;
   HSWITCH hswitch;
   SWCNTRL swcntrl;
   PID pid;

   if (argc==1) {
     printf("QSWLIST pid\n");
     return 0;    }                     /* endif */

   pid=strtoul(argv[1],NULL,0);

   happ=WinHAPPfromPID(pid);            /* get HAPP from PID */

   hswitch=WinHSWITCHfromHAPP(happ);     /* get HSWITCH from HAPP */

   rc=WinQuerySwitchEntry(hswitch, swcntrl); /* interpret HSWITCH */
   if (rc) {
     printf("WinQuerySwitchEntry returned %u\n",rc);
     return rc;
   } /* endif */

   printf("Pid %04x, Happ %08x, Hswitch %08x\n", pid, happ, hswitch);
   printf("swcntrl.hwnd     \t%08x,   swcntrl.hwndIcon    \t%08x\n",
           swcntrl.hwnd, swcntrl.hwndIcon);
   printf("swcntrl.hprog    \t%08x,   swcntrl.idProcess   \t%08x\n",
           swcntrl.hprog, swcntrl.idProcess);
   printf("swcntrl.idSession\t%08x,   swcntrl.uchVisbility\t%08x\n",
           swcntrl.idSession, swcntrl.uchVisibility);
   printf("swcntrl.fbJump   \t%08x,   swcntrl.bProgType   \t%08x\n",
           swcntrl.fbJump, swcntrl.bProgType);
   printf("swcntrl.szSwtitle %s\n", swcntrl.szSwtitle);

   return 0;
}

Related Functions