DECLARE INTEGER EnumProcessModules IN psapi; INTEGER hProcess, STRING @ lphModule,; INTEGER cb, INTEGER @ cbNeeded DECLARE INTEGER GetModuleFileNameEx IN psapi; INTEGER hProcess, INTEGER hModule,; STRING ModuleName, INTEGER nSize DECLARE INTEGER GetModuleBaseName IN psapi; INTEGER hProcess, INTEGER hModule,; STRING @ lpBaseName, INTEGER nSize lnBufSize = 4096 && should be large enough lcModBuf = Repli(Chr(0), lnBufSize) lnModBufRet = 0 IF EnumProcessModules(hProcess, @lcModBuf,; lnBufSize, @lnModBufRet) <> 0 FOR lnModNo=1 TO lnModBufRet/DWORD hModule = buf2dword(SUBSTR(lcModBuf,; (lnModNo-1)*DWORD+1, DWORD)) lcFilename = SPACE(250) lnBufSize = GetModuleFileNameEx(hProcess, hModule,; @lcFilename, Len(lcFilename)) lcFilename = Left(lcFilename, lnBufSize) lcBasename = SPACE(250) lnBufSize = GetModuleBaseName(hProcess, hModule,; @lcBasename, Len(lcBasename)) lcBasename = Left (lcBasename, lnBufSize) ? lcBasename + ' | ' + lcFilename ENDFOR ENDIF FUNCTION buf2dword (lcBuffer) RETURN Asc(SUBSTR(lcBuffer, 1,1)) + ; Asc(SUBSTR(lcBuffer, 2,1)) * 256 +; Asc(SUBSTR(lcBuffer, 3,1)) * 65536 +; Asc(SUBSTR(lcBuffer, 4,1)) * 16777216