Código: Selecionar todos
#include "common.ch"
FUNCTION MAIN
IniPrint(.T.,,"PCL")
//IniciaLaser(.T.,"19",.F.)
SetImp( .T., .F. )
?? "TESTE DE IMPRESSAO"
? "TESTE DE IMPRESSAO"
? "TESTE DE IMPRESSAO"
IniPrint(.F.)
RETURN Nil
FUNCTION IniciaLaser(lInicia, cTamanho, lLand)
HB_Default(@lInicia,.T.)
HB_Default(@cTamanho,"20")
HB_Default(@lLand,.F.)
IF lInicia
@ PROW(), PCOL() SAY Chr(27) + "%0A"
IF lLand
@ PROW(), PCOL() SAY CHR(27)+"&l1O"
ELSE
@ PROW(), PCOL() SAY Chr(27) + "&l0O"
ENDIF
@ PROW(), PCOL() SAY CHR(27)+"(12U"
@ PROW(), PCOL() SAY CHR(27)+"(s0p"+cTamanho+"h0s0b4102T"
SetPrc(0,0)
ENDIF
RETURN Nil
FUNCTION ImpLaser(nVer, nHor, nTam, cTexto, cTpLetra, lNegrito)
* nVer: Posicao na VERTICAL em dots - cada 10 pontos correspondem a
* aproximadamente 0,5 cm
* nHor: Posicao na HORIZONTAL em dots - cada 40 pontos correspondem a
* aproximadamente 1 Linha
* nTam: Tamanho da letra - 1, 2, 3, 4, ..., 100
* cTexto: Texto a ser impresso
* cTpLetra: Tipo da letra
* lNegrito: Imprime ou nao em negrito
*
* @ 00,00 SAY CHR(27)+'%0A' --> Comando e obrigatorio. Substitui o SetPrc(00,00)
*
* %0A pcl mode
* *t600R resolucao 600 dpi
* &l1X numero de copia
* *vT negrito
* (19U tabela de simbolos windows 3.1 latin 1
* (s4148t0b0s5.00v1P (s4148t - seleciona fonte univers condensed
* (s0b - (0) normal (3) negrito
* (s0s - condensed
* (s1P - (1) poliespacado (0) monoespacado
* *p1206X posicionamento do cursor na Linha (em dots)
* *p100Y posicionamento do cursor na Coluna (em dots)
*----------------------------------------------------------------------------*
DEFAULT nTam TO 10
DEFAULT cTpLetra TO 'UC'
DEFAULT lNegrito TO .F.
DEFAULT cTexto TO ' '
DO CASE
CASE cTpLetra = 'WD' // WingDings
@ 00,00 SAY CHR(27)+'(579L'+;
CHR(27)+'(s31402t0b0s'+ALLTRIM(STR(nTam,4))+'.00h0P'+;
CHR(27)+'*p'+ALLTRIM(STR(nVer,4))+'X'+;
CHR(27)+'*p'+ALLTRIM(STR(nHor,4))+'Y'+;
cTexto
CASE cTpLetra = 'LG' // Letter Gothic
@ 00,00 SAY CHR(27)+'(19U'+;
CHR(27)+'(s4102t0b0s'+ALLTRIM(STR(nTam,4))+'.00h0P'+;
CHR(27)+'*p'+ALLTRIM(STR(nVer,4))+'X'+;
CHR(27)+'*p'+ALLTRIM(STR(nHor,4))+'Y'+;
cTexto
CASE cTpLetra = 'AR' // Arial
@ 00,00 SAY CHR(27)+'(19U'+;
CHR(27)+'(s16602t0b0s'+ALLTRIM(STR(nTam,4))+'.00v1P'+;
CHR(27)+'*p'+ALLTRIM(STR(nVer,4))+'X'+;
CHR(27)+'*p'+ALLTRIM(STR(nHor,4))+'Y'+;
cTexto
CASE cTpLetra = 'UC' // Universal Condensed
@ 00,00 SAY CHR(27)+'*t600R'+;
CHR(27)+'&l1X'+;
CHR(27)+'(19U'+;
CHR(27)+'(s4148t0b4s'+ALLTRIM(STR(nTam,4))+'.00v1P'+;
CHR(27)+'*p'+ALLTRIM(STR(nVer,4))+'X'+;
CHR(27)+'*p'+ALLTRIM(STR(nHor,4))+'Y'+;
cTexto
CASE cTpLetra = 'UB' // Universal Condensed Bold
@ 00,00 SAY CHR(27)+'*t600R'+;
CHR(27)+'&l1X'+;
CHR(27)+'(19U'+;
CHR(27)+'(s4148t3b0s'+ALLTRIM(STR(nTam,4))+'.00v1P'+;
CHR(27)+'*p'+ALLTRIM(STR(nVer,4))+'X'+;
CHR(27)+'*p'+ALLTRIM(STR(nHor,4))+'Y'+;
cTexto
CASE cTpLetra = 'CB' // Courier Bold
@ 00,00 SAY CHR(27)+'*t600R'+;
CHR(27)+'&l1X'+;
CHR(27)+'(8U'+;
CHR(27)+'(s0p'+ALLTRIM(STR(nTam,4))+'h0s3b4099T'+;
CHR(27)+'*p'+ALLTRIM(STR(nVer,4))+'X'+;
CHR(27)+'*p'+ALLTRIM(STR(nHor,4))+'Y'+;
cTexto
CASE cTpLetra = 'CN' // Courier Normal
@ 00,00 SAY CHR(27)+'*t600R'+;
CHR(27)+'&l1X'+;
CHR(27)+'(8U'+;
CHR(27)+'(s0p'+ALLTRIM(STR(nTam,4))+'h0s4b3099T'+;
CHR(27)+'*p'+ALLTRIM(STR(nVer,4))+'X'+;
CHR(27)+'*p'+ALLTRIM(STR(nHor,4))+'Y'+;
cTexto
CASE cTpLetra = 'I250' // Codigo de Barras (Intercalado 2 de 5)
@ 00,00 SAY CHR(27)+'*t600R'+;
CHR(27)+'&l1X'+;
CHR(27)+'(8U'+;
CHR(27)+'(250X'+;
CHR(27)+'*p'+ALLTRIM(STR(nVer,4))+'X'+;
CHR(27)+'*p'+ALLTRIM(STR(nHor,4))+'Y'+;
cTexto
ENDCASE
RETURN Nil
FUNCTION SetImp( lCompacta, lLandScape )
Hb_Default(@lCompacta,.F.)
Hb_Default(@lLandScape,.F.)
* Informações:
* @ 00,00 SAY CHR(27)+'%0A' --> Substitui o SetPrc(00,00)
@ PROW(), PCOL() SAY CHR(27) + "E"
IF lLandScape
@ PROW(), PCOL() SAY CHR(27) + "&l1O"
ENDIF
IF lCompacta
cPclTamanho := "18"
ELSE
cPclTamanho := "10"
ENDIF
@ PROW(), PCOL() SAY CHR(27)+"%0A"
@ PROW(), PCOL() SAY CHR(27)+"(12U"
@ PROW(), PCOL() SAY CHR(27)+"(s0p" + cPclTamanho + "h0s0b4102T"
RETURN .T.
FUNCTION IniPrint(lInicia,nColunas,cPrefixoInicial,cArqMacro,cArquivo,lPreview)
STATIC cFileIni
STATIC cFileFim
STATIC cArq_USU
STATIC lArq_USU
STATIC lArq_PDF
STATIC lTMPMacro
STATIC oDlg_Relatorio
LOCAL cPastaTemp:="D:\TEMPIMP", nTimeOut, cFilePDF, nSecondsStart
DEFAULT lInicia TO .T.,;
nColunas TO 80,;
cPrefixoInicial TO "TXT",;
cArqMacro TO "",;
cArquivo TO "",;
lPreview TO .F.
IF !HB_DirExists(cPastaTemp)
HB_DirCreate(cPastaTemp)
ENDIF
IF lInicia
SET CONSOLE OFF
SET DEVICE TO PRINT
cArqIni :=cPrefixoInicial
cArq_USU :=cArquivo
lArq_USU :=.F.
lTMPMacro:=.F.
lArq_PDF :=.F.
lArq_MAT :=.F.
IF AT("PCL",cPrefixoInicial) > 0
cFileIni:=cPastaTemp+__PATHSEP()+"&cArqIni._"+StrZero(HB_Random(99999999),8)+".PI"
cFileFim:=cPastaTemp+__PATHSEP()+"&cArqIni._"+StrZero(HB_Random(99999999),8)+".PF"
SET PRINTER TO &cFileIni.
ENDIF
IF AT("TXT",cPrefixoInicial) > 0
cFileIni:=cPastaTemp+__PATHSEP()+"&cArqIni._"+StrZero(HB_Random(99999999),8)+".PI"
cFileFim:=cPastaTemp+__PATHSEP()+"&cArqIni._"+StrZero(HB_Random(99999999),8)+".PF"
SET PRINTER TO &cFileIni.
ENDIF
IF AT("MAC",cPrefixoInicial) > 0
lTMPMacro:=.T.
cFileIni :=cArqMacro
cFileFim :=cPastaTemp+__PATHSEP()+"&cArqIni._"+StrZero(HB_Random(99999999),8)+".PF"
SET PRINTER TO &cFileIni. ADDITIVE
ENDIF
IF AT("USU",cPrefixoInicial) > 0
lArq_USU:=.T.
cFileIni:=cArquivo
cFileFim:=cPastaTemp+__PATHSEP()+"&cArqIni._"+StrZero(HB_Random(99999999),8)+".PF"
ENDIF
IF AT("PDF",cPrefixoInicial) > 0
lArq_PDF:=.T.
cFileIni:=cPastaTemp+__PATHSEP()+"&cArqIni._"+StrZero(HB_Random(99999999),8)+".PI"
cFileFim:=cPastaTemp+__PATHSEP()+"&cArqIni._"+StrZero(HB_Random(99999999),8)+".PF"
SET PRINTER TO &cFileIni.
ENDIF
IF AT("MAT",cPrefixoInicial) > 0
lArq_MAT:=.T.
cFileIni:=cPastaTemp+__PATHSEP()+"&cArqIni._"+StrZero(HB_Random(99999999),8)+".PI"
cFileFim:=cPastaTemp+__PATHSEP()+"&cArqIni._"+StrZero(HB_Random(99999999),8)+".PF"
SET PRINTER TO &cFileIni.
ENDIF
SET PRINT ON
ELSE
IF lTMPMacro
@ PRow(),00 SAY Chr(27)+"E"
lTMPMacro:=Nil
lPreview:=.F.
ENDIF
SET PRINT OFF
SET PRINTER TO
SET DEVICE TO SCREEN
SET CONSOLE ON
IF !lPreview
RenameFile(cFileIni,cFileFim)
IF ! Empty(cArq_USU) .AND. !lArq_USU
RenameFile(cFileIni,cArq_USU)
lArq_USU:=Nil
ENDIF
IF ! lArq_PDF = Nil
IF lArq_PDF
cFilePDF:=StrTran(cFileFim,".PF",".PDF")
nTimeOut:=60
nSecondsStart:=Seconds()
DO WHILE !File(cFilePDF)
IF (Seconds() - nSecondsStart) > nTimeOut
EXIT
ENDIF
hwg_DoEvents()
ENDDO
IF File(cFilePDF)
COPY_ARQ(cFilePDF,.F.)
ENDIF
lArq_PDF:=Nil
ENDIF
ENDIF
ELSE
fErase(cFileIni)
ENDIF
cFileIni :=Nil
cFileFim :=Nil
cArq_USU :=Nil
lArq_USU :=Nil
lArq_PDF :=Nil
lArq_MAT :=Nil
oDlg_Relatorio:=Nil
ENDIF
RETURN cFileIni
FUNCTION MacroTMP(aVetor)
LOCAL cFileMacro, nTmpHandle, lExiste, cFile, cArqEntrada___, I
LOCAL cPastaTemp:="D:\TEMPIMP"
DEFAULT aVetor TO {}
IF !HB_DirExists(cPastaTemp)
HB_DirCreate(cPastaTemp)
ENDIF
cFileMacro:="ERRO NO ARQUIVO DA MACRO"
IF Len(aVetor) > 0
cFileMacro:=cPastaTemp+__PATHSEP()+"MAC_"+StrZero(HB_Random(99999999),8)+".PI"
DO WHILE .T.
cFile :=FileSeek(cFileMacro)
lExiste:=.F.
DO WHILE !Empty(cFile)
cFileMacro:=cPastaTemp+__PATHSEP()+"MAC_"+StrZero(HB_Random(99999999),8)+".PI"
cFile :=FileSeek()
hwg_DoEvents()
ENDDO
IF !lExiste
nTmpHandle := FCreate(cFileMacro)
IF nTmpHandle # - 1
IF FClose(nTmpHandle)
EXIT
ENDIF
ENDIF
ENDIF
ENDDO
cArqEntrada___:=""
FOR I:=1 TO Len(aVetor)
cArqEntrada___+=aVetor[I]+IF(I < Len(aVetor),' + ','')
hwg_DoEvents()
NEXT
cArqEntrada___:='"'+"COPY /B "+cArqEntrada___+" "+cFileMacro+'"'
COPY_ARQ(&cArqEntrada___,.T.)
ENDIF
RETURN (cFileMacro)
FUNCTION Eject
?? Chr(12)
RETURN Nil
STATIC FUNCTION __PATHSEP
RETURN "\"
#pragma BEGINDUMP
#pragma comment( lib, "shell32.lib" )
#include "hbapi.h"
#include <windows.h>
HB_FUNC( COPY_ARQ )
{
SHELLEXECUTEINFO ShExecInfo = {0};
LPCTSTR lpCommand = (LPTSTR) hb_parc( 1 );
BOOL bRetorno = FALSE;
int iLenlpCommand = hb_parclen( 1 ) + 8;
//char * cfinalCommand = ( char * ) hb_xgrab( hb_parclen( 1 ) + 8 );
char * cfinalCommand = ( char * ) hb_xgrab( ( iLenlpCommand + 8 ) * sizeof( char ) );
hb_snprintf(cfinalCommand, iLenlpCommand, "%s%s", "/C ", lpCommand);
//MessageBox( NULL, cfinalCommand, TEXT( HB_I_("TESTE final") ), MB_ICONASTERISK );
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = "cmd.exe";
ShExecInfo.lpParameters = cfinalCommand;
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_HIDE;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
if(ShExecInfo.hProcess !=NULL)
{
if (hb_parl(2))
{
//Aguarda até que a execução tenha sido concluída.
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
CloseHandle(ShExecInfo.hProcess);
}
bRetorno = TRUE;
}
else
{
//Retorna .F.
bRetorno = FALSE;
}
hb_xfree( cfinalCommand );
hb_retl(bRetorno);
}
#pragma ENDDUMP