Um cliente bem antigo me solicitou alterações nos fontes do sistema dele para permitir a impressão em rede sem os costumeiros erros de impressora desconectada em rede.
Pesquisei no forum e não achei nada que pudesse me ajudar.
Então criei a alternativa seguinte para substituir o ISPRINTER e outros. Sei que não é a melhor solução, mas para mim funcionou, espero que seja de utilidade para outro clippeiro.
Obs: Não comentei o código por pura falta de tempo. Mas se alguém precisar eu volto e comento.
Abraços. :)Pos
Código: Selecionar todos
FUNCTION CHECAIMP(cLPT)
LOCAL lVOLTA := .F., lLPT_VALID := .F., lLPTMAPOK := .F. ,;
cLPT_LIDA, cLPT_STATUS, cLPT_MAP
cLPT := UPPER(STRTRAN(cLPT,':'))
IF LEN(cLPT)==1
IF VAL(cLPT)>=1 .AND. VAL(cLPT)<=3
cLPT := 'LPT'+cLPT
ENDIF
ENDIF
IF cLPT $ 'LPT1|LPT2|LPT3'
lLPT_VALID := .T.
ENDIF
IF lLPT_VALID
cCOMANDO := 'NET USE > NETIMP' + RIGHT(cNETNAME,2) +'.TXT'
!(cCOMANDO)
IF FILE('NETIMP' + RIGHT(cNETNAME,2) +'.TXT')
HANDLE = FOPEN('NETIP'+cVOLTA+'.TXT')
WHILE .NOT. FEOF(HANDLE)
TEMP = FREADLINE(HANDLE)
IF ' LPT'$TEMP
cLPT_STATUS := UPPER(TOKEN(TEMP,' ',1))
cLPT_LIDA := UPPER(TOKEN(TEMP,' ',2))
cLPT_MAP := UPPER(TOKEN(TEMP,' ',3))
IF 'DESCON'$cLPT_STATUS
lLPTMAPOK := NETREDIR(cLPT_LIDA+":",cLPT_MAP)
ENDIF
IF cLPT$cLPT_LIDA .AND. lLPTMAPOK
lVOLTA := .T.
ENDIF
ENDIF
ENDDO
FCLOSE(HANDLE)
ELSE
lVOLTA := ISPRINTER()
ENDIF
ELSE
DBOX('Porta de Impressora Invalida: '+cLPT)
lVOLTA := .F.
ENDIF
RETURN (lVOLTA)


