oShellCmd = NEWOBJECT('_shellexecute', '_environ.vcx') oShellCmd.ShellExecute(xacordform+'.xfdf',LEFT(hdir,RAT("\",hdir)-1), 'Open') INKEY(5.2) #DEFINE INFINITE 0xFFFFFFFF DECLARE INTEGER CloseHandle IN kernel32 INTEGER hObject DECLARE INTEGER WaitForSingleObject IN kernel32; INTEGER hHandle, INTEGER dwMilliseconds lnhandle=ISRUNNING('Adobe') *--This never waits because the value returned from isrunning() is not *--what waitforsingleobject requires =WaitForSingleObject ( lnHandle, INFINITE ) =CloseHandle( lnHandle ) *--George Tasker's IsRunning Utility FUNCTION IsRunning LPARAMETER pctitle DECLARE INTEGER GetDesktopWindow IN Win32API DECLARE INTEGER GetWindow IN Win32API; INTEGER hwnd, INTEGER dflag DECLARE INTEGER GetWindowText IN Win32API ; INTEGER hwnd, STRING @lptstr, INTEGER cbmax LOCAL lnhwnd, lnnext, lldone, lctitle_bar, lcsearchfor,; lntext_len lcsearchfor = UPPER(ALLTRIM(pctitle)) lnhwnd = GetDesktopWindow() lnhwnd = GetWindow(lnhwnd, 5) && Get first child window lnnext = 2 lldone = .F. lctitle_bar = "" DO WHILE NOT lldone IF NOT EMPTY(lnhwnd) lctitle_bar = SPACE(200) + CHR(0) lntext_len = GetWindowText(lnhwnd, @lctitle_bar, 200) lctitle_bar = UPPER(LEFT(lctitle_bar, lntext_len)) lldone = (lcsearchfor $ lctitle_bar) IF NOT lldone lnhwnd = GetWindow(lnhwnd, lnnext) ENDIF ELSE lldone = .T. ENDIF ENDDO RETURN lnhwnd