*--TCH 03/04/2004 *--Print Using API DO printfile WITH "C:\foxpro\vfp8\tmpltr.txt" RETURN PROCEDURE printfile PARAMETERS lcfile IF TYPE('lcfile')<>"C" .or. EMPTY(lcfile) .or. !FILE(lcfile) =OKAY('The report file was not created. An error occured.') RETURN .F. ENDIF PRIVATE llreturn llreturn = .T. PRIVATE rcptfile rcptfile = lcfile SET PRINTER TO NAME GETPRINTER() PRIVATE rcptprinter rcptprinter = SET('PRINTER',3) PRIVATE lcsafety lcsafety = SET('SAFETY') SET SAFETY OFF DECLARE INTEGER GetLastError IN WIN32api DECLARE INTEGER CopyFile IN KERNEL32.DLL ; STRING @SourceFileName, ; STRING @DestFileName, ; INTEGER bFailIfExists PRIVATE lresult lresult=CopyFile(@rcptfile,@rcptprinter,0) IF lresult = 0 PRIVATE lnewresult lnewresult = Apierror(ALLTRIM(STR(GetLastError()))) IF TYPE('lnewresult')="C" WAIT WINDOW lnewresult ELSE WAIT WIND ALLTRIM(STR(lnewresult)) ENDIF llreturn = .F. ENDIF IF TYPE('lcsafety')="C" .and. INLIST(lcsafety,'OFF','ON') SET SAFETY &lcsafety ENDIF CLEAR DLLS 'CopyFile' RETURN llreturn FUNCTION Apierror(tnErrorCode) DECLARE INTEGER FormatMessage IN kernel32; INTEGER dwFlags,; INTEGER lpSource,; INTEGER dwMessageId,; INTEGER dwLanguageId,; INTEGER @ lpBuffer,; INTEGER nSize,; INTEGER Arguments Local lcErrBuffer, lcErrorMess, liNewErr, lnErrorCode lcErrBuffer = REPL(CHR(0),1000) lnErrorCode = tnErrorCode liNewErr = FormatMessage(0x1000; ,.NULL., lnErrorCode, 0, @lcErrBuffer,500,0) lcErrorMess = Transform(lnErrorCode) + " " + LEFT(lcErrBuffer, AT(CHR(0),lcErrBuffer)- 1 ) RETURN lcErrorMess