cliente XP com impressao em outro cliente 98

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
RenatoReis
Usuário Nível 1
Usuário Nível 1
Mensagens: 38
Registrado em: 02 Out 2006 17:04

cliente XP com impressao em outro cliente 98

Mensagem por RenatoReis »

Tenho uma rede com máquinas em Win 98. Algumas possuem impressoras e outras não. Meus programas são em CLIPPER52 e quando desejo imprimir (pelo sistema) em alguma impressora da rede, há uma rotina que faz um set printer para a impressora desejada e que está instalada em cada máquina.
Chegaram novos equipamentos com Win XP e cada impressora adicionada tem um registro de porta diferente de LPT1, LPT2, etc. São registradas assim (\\Maquina\Impressora).
Meus direcionamentos são para LPT1, LPT2, LPT3... e portanto não consigo imprimir nestas impressoras na máquina com XP.
Já tentei o seguinte comando: Set printer to \\maquina\impressora e
net use lpt1 \\maquina\impressora e nada funcionou!

Os procedimentos estão corretos? Alguém poderia me orientar?
Obrigado!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Tche, segue abaixo como eu uso as impressao na rede e funciona tanto em 95,98,XP,2000.

Código: Selecionar todos

*************
FUNC CHAMAIMP
*************
xTIPOIMP=SPACE(1)

save screen
aWin := Win( 08, 25, 15, 54, "Relacao de Impressora", WT_VERDE2BRANCO,WD_VERDE2BRANCO)
SETCOLOR( "N/*W,N*/W, , , N*/W" )
@ 10,26 say " 1 = Financeiro Matricial  "
@ 11,26 say " 2 = Balanca Matricial     "
@ 12,26 say " 3 = Bandeira Jato de Tinta"
@ 13,26 say " 4 = Impressora Local      "

SET CONFIRM OFF
@ 14,26 say " Opcao =>      "

@ 14,38 GET xTIPOIMP  PICT "!" valid(xTIP69$"1234")   when DwnMsg( "Escolha a Impressora que deseja Imprimir" )
READ

IF xTIPOIMP="1"  // MATRICIAL DO FINANCEIRO
   NETREDIR("LPT1","\\MAQUINA1\IMPRESSORA1") //CHAMANDO A IMPRESSORA NA REDE
   set device to print 
   set printer to lpt1
ELSEIF xTIPOIMP="2"  // MATRICIAL DA BALANCA
   NETREDIR("LPT1","\\MAQUINA2\IMPRESSORA1") //CHAMANDO A IMPRESSORA NA REDE
   set device to print 
   set printer to lpt1
ELSEIF xTIPOIMP="3"  // JATO DE TINTA DO BANDEIRA
   NETREDIR("LPT1","\\MAQUINA3\IMPRESSORA2") //CHAMANDO A IMPRESSORA NA REDE
   set device to print 
   set printer to lpt1
ELSEIF xTIPOIMP="4"  // IMPRESSORA LOCAL
   set device to print 
   set printer to lpt1
ENDIF
RESTORE SCREEN

*CANCELANDO IMPRESSAO
SET PRINTER TO
set device to screen
NETCANCEL("LPT1")

Obs: A CT.LIB ou CTP.LIB deve estar linkada com o seu sistema...
Abraços
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
RenatoReis
Usuário Nível 1
Usuário Nível 1
Mensagens: 38
Registrado em: 02 Out 2006 17:04

Mensagem por RenatoReis »

(Sygecom) obrigado por responder a minha solicitação!
A rotina que utilizo é parecida com a que vc me enviou, porém não conhecia o NETREDIR. Como devo saber se o CT.LIB ou CTP.LIB estão anexadas? Qual o comando? seria include CT.LIB #
Abraços, Valeu!!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Se vc usa o BLINKER basta vc linkar ao seuprograma.lnk a CT.LIB ou CTP.LIB ..!!!

A CT.LIB é pra modo real e a CTP.LIB é pra modo EXTENDIDO..

Abraços
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
RenatoReis
Usuário Nível 1
Usuário Nível 1
Mensagens: 38
Registrado em: 02 Out 2006 17:04

Mensagem por RenatoReis »

Sygecom

Perdoe-me a insistência, mas eu estou usando o clipper52, tem alguma diferença pro que vc me passou? onde informo, qual sintexe para anexar a ct.lib ou ctp.lib?


Abcs. Renato
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Amigunho,

Não faz diferença alguma, basta vc linkar a CT.LIB se estiver usando o BLINKER em modo REAL ou a CTP.LIB em modo EXTENDIDO.

Abraços
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
RenatoReis
Usuário Nível 1
Usuário Nível 1
Mensagens: 38
Registrado em: 02 Out 2006 17:04

Mensagem por RenatoReis »

Sygecom, amigo,
Procurei pelo CT.LIB e CTP.LIB e não os encontrei na pasta do clipper5 e suas subpastas.
Reparei também que seus direcionamentos de "set printer to" são sempre para LPT1.
Nas minhas maquinas com Win 98, todas as impressoras da rede são instaladas, nas portas lpt1, lpt2, lpt3, lpt4, lpt5 e lpt6. O sistema deve permitir que qualquer máquina imprima em qualquer impressora da rede, sendo que as maq. com Xp precisam de tratamento diferenciado, porém sem prejudicar o funcionamento das outras. A rotina precisa ser generica para todas as máquinas.
Veja se pode me ajudar. Abcs. Renato
Avatar do usuário
RenatoReis
Usuário Nível 1
Usuário Nível 1
Mensagens: 38
Registrado em: 02 Out 2006 17:04

Refazendo minha pergunta

Mensagem por RenatoReis »

Há alguns dias eu postei uma msg referente a problemas com impressão. É mais ou menos como os problemas apresentados. Diante da solução que vc passou eu gostaria de saber se vc saberia como me ajudar: Tenho uma rede com 10 maq., 9 com Win98 e 1 com Win Me e quatro delas tem impressoras. Tenho no sistema uma rotina de escolha em qual impressora se deseja imprimir, como a seguir:
function searchimp()
aviso2(24,"Impressoras F1-Local F4-Reg F5-Geo F8-Ros F10-Bal")
SET CONSOLE OFF
SET PRINT ON
SET DEVICE TO PRINT
if lastkey()=28
set printer to lpt1
elseif lastkey()=-3
set printer to lpt2
elseif lastkey()=-4
set printer to lpt3
elseif lastkey()=-7
set printer to lpt4
elseif lastkey()=-9
set printer to lpt5
endif
return

Em cada uma das 10 maquinas as impressoras foram adicionadas desta forma: Lpt1 - para a impressora mais proxima de cada maq. e as outras foram padronizados as Lpts restantes.
Maq01- c/ impressora local tem dois Lpts destinados a mesma impressora, o Lpt1 e Lpt3
Maq02- s/ impressora local tem o lpt1 para a impressora + próxima e outras opções de lpt
E segue assim por diante.
Lpt1-sempre a local ou a mais próxima para as maq. Sem imp. Local)
Lpt2-para a imp. Reg
Lpt3-para a imp Geo
Lpt4-para a imp Ros
Lpt5-para a imp Bal

Pois bem, chegaram 2 novos micros, com windows XP. Ao instalas estas impressoras verifiquei que as portas Lpt1, lpt2 e lpt3 (que são as únicas q ele apresenta) não recebiam as impressoras da minha rede e sim, era criado um caminho \\maquina\impressora.
Já troquei mensagens com outros usuários mas nada consegui resolver ainda e sinceramente estou precisando resolver este problema. Uso o Clipper5.2 e na última tentativa, me indicaram usar o NETREDIR através da ct.lib ou ctp.lib, só que eu acho que esta lib não tem nesta versão q eu estou usando, não a encontrei na pasta do clipper.
Prossegui usando o NET USE, que foi outra sugestão e não apresentou erros, testei de várias formas, consegui impressão pelo XP, porém, quando fui testar em outra máquina com Win 98 a mesma rotina, escolhendo outra impressora da rede, a impressão foi direcionada para a LPT1, não sei se foi por falta de cancelar este direcionamento. Até concordo, pois no comando há este direcionamento fixo. (veja o comando).
RUN CMD.EXE /C NET USE LPT1 \\MAQ08\ROS /Y >NULL
Caso tenha como me ajudar envie exemplos de codigo e dados do arquivo das impressoras que vc criou e como exatamente vc as trata.

Aguardo por ajuda, obrigado. Renato (multcoop@oi.com.br)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Tche

Abaixo postei um exemplo completo de como faço pra imprimir tanto em 95/98/XP/2000 .....

Código: Selecionar todos

*INICIA A IMPRESSAO

NETREDIR("LPT1","\\MICRO\IMPRESSORA")
SET DEVICE TO PRINT
set print to lpt1

@ prow(),01       SAY "BLA,BLA,BLA,BLA,BLA,BLA,BLA"
@ prow(),PCOL()+1 SAY "BLA,BLA,BLA,BLA,BLA,BLA,BLA"

*TERMINA A IMPRESSAO
SET PRINTER TO
set device to screen
NETCANCEL("LPT1")
Obs:O nome do MICRO deve ser igual ao nome do micro na REDE. e IMPRESSORA deve ser o nome criado para compartilhar a impressora.
Eu particular mente uso o BLINKER 7.0 para compilar meus sistemas entaum abaixo vou postar como adiciono a CTP.LIB em meus sistemas.
Atraves do NOMEDOSISTEMA.LNK

Código: Selecionar todos

NOBELL
Blinker Incremental Off
Blinker Cache EMS 50%,50% 
Blinker Cache XMS 50%,50% 
Blinker Demonstration Date 2007/03/20 
Blinker Link EMS ON 
Blinker Link XMS ON 
Blinker Exec Clipper //Dynf:8 //F:254 
Blinker Exec Comp 1 
Blinker Exec Exte 
Blinker Memo Pack 60 
Search BlxRatex 
Search BlxClp53 
Blinker Incr Pad 256 
Blinker Over Page On 
Blinker Over Opsi 60 
Blinker Procedure Depth 70
OutPut NOMEDOSISTEMA.EXE

FILE SISTEMA 
FILE MENUS
FILE ROTINA
FILE CADASTRO
FILE BAL
FILE BALV
FILE FINANCE
FILE SENHA
FILE ESTOQUE
FILE FOLHA

FILE __WAIT
FILE MSGPOR
FILE BALANCA
FILE SERIAL
FILE TIMESLIC

LIB CLIPPER,EXTEND,VL2,CTP,DBFCDX,_DBFCDX
Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
RenatoReis
Usuário Nível 1
Usuário Nível 1
Mensagens: 38
Registrado em: 02 Out 2006 17:04

Ok copiado!

Mensagem por RenatoReis »

Leonardo,
já postei pra vc em outros pos mais recentes, como falei vou testar no cliente e depois te respondo qual foi. Obrigado. Renato.
Sempre que um inimigo estiver cometendo um erro, jamais o interrompa!
(Napoleão Bonaparte)
Avatar do usuário
RenatoReis
Usuário Nível 1
Usuário Nível 1
Mensagens: 38
Registrado em: 02 Out 2006 17:04

Sucesso!

Mensagem por RenatoReis »

:{ Pessoal em postagem mais recente parabenizo meus amigos do forum!
Refiz minha rotina de impressão parecida com a do sygecom, segui a sugestão do Marchiore quanto ao netcancel("lpt1") antes dos netredir e....
Sucesso!
Pra quem ainda não conseguiu, não desista! as sugestões foram perfeitas e tudo correu perfeitamente!
Brigadão a todos e se alguém precisar de alguma dica, tb tentarei ajudar. Abcs.Renato
Sempre que um inimigo estiver cometendo um erro, jamais o interrompa!
(Napoleão Bonaparte)
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

RENATO / TODOS DO FURUM

Mensagem por ederxc »

CARA O SYGERCOM LHE PASSOU UMA ROTINA PARA VC USAR O NETREDIR EM SEU CLIPER 5.2 CORRETO??? ONDE VC ENCREMENTOU ESSA ROTINA FIQUEI MEIOQ UE BOIANDO NA PARADA .. SE ALGUEM PUDER ME DAR UM LOOK AGRADEÇO :xau
C:\Xharbour\Xdev\Fw\VSX
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Alguem pode me dar uma auxilio .. apenas me dar uns detalhes ! por favor
C:\Xharbour\Xdev\Fw\VSX
menga
Usuário Nível 1
Usuário Nível 1
Mensagens: 7
Registrado em: 02 Set 2004 09:40
Localização: campinas

Mensagem por menga »

Bom dia para todos.
Não consegui compreender como conseguir as libs ctp.lib e/ou ctp.lib, que contem a rotina NETREDIR ?
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho Ederxc( parece nome de um robô de guerra nas estrelas, hehehe )

Veja o NETREDIR() é uma função constante na CA-Tools(é isso mesmo?) e tem funcionamento identico a:

RUN CMD.EXE /C NET USE LPT1 \\MAQ08\ROS /Y

Se voce não possuir a CT.LIB pode usar o comando acima lembrando que se estiver usando Win95/98/ME troque CMD.EXE por COMMAND.COM.

Quem não tiver as libs me envie um email para irochinha@itelefonica.com.br

Só lembrando CTP.LIB é para modo PROTEGIDO e o amiguinho SygeCOM confundiu, hehehe.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Responder