lcACORDdef = SYS(5)+SYS(2003) SET DEFAULT TO LEFT(hdir,RAT("\",hdir)-1) *I can verify my default directory here is correct: c:\foxpro\vfp8 IF FILE(tempfile) .and. FILE(pdffile) && returns .t. as it should *llacordok = RunAndWait(xacordform+'.xfdf',' ',LEFT(hdir,RAT("\",hdir)-1)) *--line below is the same as the line above hard coded it for testing *--The only difference that I can see is that I am not passing a 2nd *--second parameter in this case (no command line) llacordok = RunAndWait('61NC.XFDF',' ','C:\FOXPRO\VFP8') IF !llacordok =MESSAGEBOX("Unable to print Acord Form.",0+16+4096,"ERROR") ELSE WAIT WINDOW "Finished Printing" NOWAIT ENDIF ELSE =MESSAGEBOX("Unable to create Acord Form.",0+16+4096,"An ERROR Ocurred") ENDIF SET DEFAULT TO &lcACORDdef RETURN PROCEDURE RunAndWait (lcApp, lcCmdLine, lcdir) =DECL() #DEFINE INFINITE 0xFFFFFFFF LOCAL lcStartupInfo, lcProcInfo, hProcess, ; lnPrio, lnIBelieve1 lnIBelieve1 = 1 && Don't remember what that was lnPrio = 32 && Priority of Process=Normal lcStartupInfo = CHR(68) + REPLI(CHR(0), 67) lcProcInfo = REPLI(CHR(0), 16) IF CreateProcess(0, m.lcApp+" "+m.lcCmdLine+CHR(0), 0,0,; m.lnIBelieve1, m.lnPrio,; 0, 0, @lcStartupInfo, @lcProcInfo) <> 0 * process and thread handles returned in ProcInfo structure hProcess = buf2dword(SUBSTR(lcProcInfo, 1,4)) hThread = buf2dword(SUBSTR(lcProcInfo, 5,4)) * waiting until the termination = WaitForSingleObject(hProcess, INFINITE) = CloseHandle(hThread) = CloseHandle(hProcess) ELSE *!!!* This is where it returns .f. the result is 0 RETURN .F. ENDIF RETURN PROCEDURE DECL DECLARE INTEGER CreateProcess IN kernel32; INTEGER lpAppName, STRING lpCmdLine, INTEGER lpProcAttr,; INTEGER lpThrAttr, INTEGER bInhHandles, INTEGER dwCrFlags,; INTEGER lpEnvir, INTEGER lpCurDir, ; STRING @lpStInfo, STRING @lpProcInfo DECLARE INTEGER GetLastError IN kernel32 DECLARE INTEGER CloseHandle IN kernel32 INTEGER hObject DECLARE INTEGER WaitForSingleObject IN kernel32; INTEGER hHandle, INTEGER dwMilliseconds RETURN 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 RETURN