WinHAPPfromPID

WinHAPPfromPID returns the PM Application Handle (HAPP) from the process ID. If the process ID is not a valid PM application, then 0 is returned.

Syntax
HAPP WinHAPPfromPID (PID pid)

Parameters

 * pid(PID) input : Process ID

Return Code

 * happ(HAPP) returns:Application handle.
 * NULLHANDLE If the PID is invalid, or an error occurred.
 * HAPP       The Application Handle, if PID is valid.

Remarks
WinHAPPfromHSWITCH 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

Example Code
 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", sz.Swtitle);

return 0; } 

Related Functions

 * WinQuerySwitchEntry
 * WinQuerySwitchHandle
 * WinQuerySwitchList