> * The only valid call is from Launcher.EXE for it verified user rights, terminate otherwise > if not Inlist(Nvl(Lower(getParentProgram()), ''), 'x:\foxv\prog\launcher.exe', '\\skyapps\apps\foxv\prog\launcher.exe') > Messagebox('This program cannot run independently' + Chr(13) + 'You must use the Local Launcher application, contact IT for directions', 64, 'Direct access disabled!') > return .f. > endif >>
>local loLocator, loWMI, loProcesses, loProcess, lnProgID, loParentProcesses, loParentProcess, lcParent > >declare integer GetCurrentProcessId in WIN32API > >lcParent = null >lnProgID = GetCurrentProcessId() >loLocator = CREATEOBJECT('WBEMScripting.SWBEMLocator') >loWMI = loLocator.ConnectServer() >loProcesses = loWMI.ExecQuery([SELECT * FROM Win32_Process WHERE ProcessId = ] + Transform(lnProgID)) > >For each loProcess in loProcesses > loParentProcesses = loWMI.ExecQuery([SELECT * FROM Win32_Process WHERE ProcessId = ] + Transform(loProcess.ParentProcessID)) > for each loParentProcess in loParentProcesses > lcParent = loParentProcess.ExecutablePath > endfor >endfor > >return lcParent >This is a fancy approach. Thanks for sharing it.