>#Define ERROR_SUCCESS 0 && OK >DO decl > >oReg = NEWOBJECT("FileReg",'registry.vcx') >cAppKey = "" >cAppName = "" >m.cExtn = "PDF" >nErrNum = oReg.GetAppPath(m.cExtn,@cAppKey,@cAppName) > >IF m.nErrNum # ERROR_SUCCESS > MESSAGEBOX(C_EXTNOFOUND_LOC) > RETURN >ENDIF > >IF ATC(".EXE",m.cAppName) #0 > m.cAppName= ALLTRIM(SUBSTR(m.cAppName,1,ATC(".EXE",m.cAppName)+3)) > IF ASC(LEFT(cAppName,1))=34 &&check for long file name in quotes > m.cAppName = SUBSTR(m.cAppName,2) > ENDIF >ENDIF > >*|-- Run REAL App, with file name parameter >set DEFAULT TO c:\foxpro\vfp8 >llacordok = RunAndWait( m.cAppName, '61NC.XFDF', 'C:\FOXPRO\VFP8' ) >IF !llacordok > =MESSAGEBOX("Unable to print Acord Form.",0+16+4096,"ERROR") >ELSE > WAIT WINDOW "Finished Printing" NOWAIT >ENDIF > >PROCEDURE RunAndWait (lcApp, lcCmdLine, lcdir) >#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 > set STEP on > = WaitForSingleObject(hProcess, INFINITE) > = CloseHandle(hThread) > = CloseHandle(hProcess) >ELSE > 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 > >Tracy,