*--Look for a specific process - in this example, notepad.exe myapp = "NotePad.EXE" _SCREEN.WINDOWSTATE = 2 lcComputer = Iif(Vartype(tcComputer) = 'C' and not Empty(tcComputer), tcComputer, '.') loWMIService = GetObject("winmgmts://" + lcComputer + "/root/cimv2") loProcesses = loWMIService.ExecQuery("SELECT * FROM Win32_Process") lcprocesses = "" DECLARE INTEGER TerminateProcess IN kernel32; INTEGER hProcess, INTEGER uExitCode DIMENSION allprocs(1) i = 0 lnrunning = 0 CREATE CURSOR openproc (cprocess c(50), nhandle c(10)) For Each loProcess in loProcesses with loProcess i = i + 1 DIMENSION allprocs(i) allprocs(i) = .Name INSERT INTO openproc VALUES (allprocs(i), .handle) ? .Name, .ExecutablePath, .caption, .commandline, Ctot(Transform(.CreationDate, '@R 9999-99-99T99:99:9999')) IF UPPER(ALLTRIM(allprocs(i))) = UPPER(ALLTRIM(myapp)) lnrunning = lnrunning + 1 ENDIF endwith NEXT IF lnrunning > 0 =MESSAGEBOX(ALLTRIM(STR(lnrunning))+" copie(s) of "+myapp+" is/are running.") ELSE =MESSAGEBOX(myapp+" is not running") ENDIF SELE openproc =MESSAGEBOX('Press anykey to browse all running processes...') BROWSE declare integer EnumProcesses in psapi.dll string@, integer, integer@ lparray = replicate(chr(0),2048) lnsizeneeded = 0 if EnumProcesses(@lparray,len(lparray),@lnsizeneeded) <> 0 then * lnsizeneeded is the size (in bytes) of the information returned in lparray; truncate if necessary lparray = left(lparray,lnsizeneeded) lctmp = space(0) for lxx = 1 to lnsizeneeded step 4 lctmp = substr(lparray,lxx,4) * lctmp is a character reprentation of the DWORD representing the Process ID. It needs to be converted to decimal. ? 'PID is ' + transform(asc(right(lctmp,1))*(256^3)+asc(substr(lctmp,3,1))*(256^2)+asc(substr(lctmp,2,1))*(256)+asc(left(lctmp,1))) endfor endif *= TerminateProcess(hProcess, 0) RETURN>My application will run a VB EXE.