netsys Posted October 23, 2007 Report Share Posted October 23, 2007 Bom dia amigos A TDosPrn não funciona via acesso remoto da à rea de trabalho do XP? Alguem utiliza? O REPORT funciona bem em qq impressora remota mas a TDOSPRN nem que se tenha uma impressora direto na LPT1 da estação remota não vai.... Testei também a TXTprev e nada....simplesmente não imprime. Alguma idéia?? Obrigado Alberto-SP FW24+Clip5.2e Quote Link to comment Share on other sites More sharing options...
netsys Posted October 23, 2007 Author Report Share Posted October 23, 2007 Bom dia amigos A TDosPrn não funciona via acesso remoto da à rea de trabalho do XP? Alguem utiliza? O REPORT funciona bem em qq impressora remota mas a TDOSPRN nem que se tenha uma impressora direto na LPT1 da estação remota não vai.... Testei também a TXTprev e nada....simplesmente não imprime. Alguma idéia?? Obrigado Alberto-SP FW24+Clip5.2e Quote Link to comment Share on other sites More sharing options...
aferra Posted October 23, 2007 Report Share Posted October 23, 2007 Olá Alberto. Eu utilizo desta forma e não tenho problemas com impressão remota. Veja. Pegue na página principal a classe TSysInfo oSystemInfo:=TSystemInfo():New() nSistema:=LEFT(oSystemInfo:WinVer(),12) Para pegar a porta da impressora eu utilizo esta função, colocando esta varÃavel como PUBLIC cPorta FUNCTION aPrinters() LOCAL aPrinters:= {},oReg LOCAL oKey,cBuffer:="",nId:=0 IF LEFT(nSistema,10)=="Windows XP" .OR. LEFT(nSistema,12)=="Windows 2000" oReg:=TReg32():New(HKEY_CURRENT_USER,"Software\Microsoft\Windows NT\CurrentVersion\Windows") cName:=LEFT(oReg:Get("Device"),AT(",",oReg:Get("Device"))-1) oReg:Close() oReg:=TReg32():New(HKEY_LOCAL_MACHINE,"System\CurrentControlSet\Control\Print\Printers") while RegEnumKeys(oReg:nHandle,nId++,@cBuffer )==0 oKey:=TReg32():New(HKEY_LOCAL_MACHINE,"System\CurrentControlSet\Control\Print\Printers\"+cBuffer) aAdd(aPrinters,{oKey:Get("Name"),oKey:Get("Port"),cName==oKey:Get("Name")}) oKey:Close() END oReg:Close() FOR i:=1 TO LEN(aPrinters) IF aPrinters[i,3] cPorta:=aPrinters[i,2] cName:=aPrinters[i,1] ; EXIT END NEXT ELSE oReg:=TReg32():New(HKEY_LOCAL_MACHINE,"Config\0001\System\CurrentControlSet\Control\Print\Printers") cName:=ALLTRIM(oReg:Get("Default")) oReg:Close() oReg:=TReg32():New(HKEY_LOCAL_MACHINE,"System\CurrentControlSet\Control\Print\Printers") while RegEnumKeys(oReg:nHandle,nId++,@cBuffer )==0 oKey:=TReg32():New(HKEY_LOCAL_MACHINE,"System\CurrentControlSet\Control\Print\Printers\"+cBuffer) aAdd(aPrinters,{oKey:Get("Name"),oKey:Get("Port"),cName==oKey:Get("Name")}) oKey:Close() END oReg:Close() FOR i:=1 TO LEN(aPrinters) IF aPrinters[i,3] cPorta:=aPrinters[i,2] cName:=aPrinters[i,1] ; EXIT END NEXT END RETURN(cName) Depois na hora da impressão eu utilizo esta variavel cFileTxt:="NFS.PRN" e só fazer como está descrito abaixo IF LEFT(nSistema,10)=="Windows XP" .OR. LEFT(nSistema,12)=="Windows 2000" oPrn:=TDosPrn():New(cFileTxt) ELSE IF LEN(cPorta) <= 5 .AND. LEFT(UPPER(cPorta),4)=="LPT1" //--- Spool Local oPrn:=TDosPrn():New(cFileTxt) ELSE //--- Spool Remoto oPrn:=TDosPrn():New(cPorta) END END oPrn:comand() oPrn:Say() oPrn:End() IF LEFT(nSistema,10)=="Windows XP" .OR. LEFT(nSistema,12)=="Windows 2000" WAITRUN("CMD /C COPY /B " + cFileTxt + " " + cPorta, 0 ) FERASE(cFileTxt) ELSE cPorta2:="PRN" IF LEN(cPorta) <= 5 .AND. LEFT(UPPER(cPorta),4)=="LPT1" //--- Spool Local WAITRUN("COMMAND.COM /C COPY /B " + cFileTxt + " " + cPorta2, 0 ) FERASE(cFileTxt) ELSE //--- Spool Remoto WAITRUN("COMMAND.COM /C COPY /B " + cFileTxt + " " + cPorta, 0 ) END END id=code>id=code>Espero que tenha explicado corretamente, mas qq dúvida é chamar. Alessandroid=blue> FW20d+CL53b+Blk7+@Say+CDX V CONGRESSO FIVEWIN - 24/NOVEMBRO/2007 - EU VOUid=red> "Aceita o conselho dos outros, mas nunca desistas da tua própria opinião" Editado por - aferra on 23/10/2007 08:34:24 Quote Link to comment Share on other sites More sharing options...
netsys Posted October 23, 2007 Author Report Share Posted October 23, 2007 Valeu Alessandro Vou testar aqui e retorno em breve. Obrigado de novo Alberto Fw24+Clip5.2e Quote Link to comment Share on other sites More sharing options...
gvc Posted October 24, 2007 Report Share Posted October 24, 2007 Vc capturou a impressora remota como LPTx? Tente a captura da porta como LPT2. Quando for gerar o relatório com TDOSPRN informe que o arquivo será gerado em LPT2. Quote Link to comment Share on other sites More sharing options...
netsys Posted October 24, 2007 Author Report Share Posted October 24, 2007 Ola GVC A situação é a seguinte: A impressora é local, numa estação remota. O acesso remoto à area de trabalho do XP permite que eu direcione qualquer impressão para essa impressora local, menos o que é gerado pela TDOSprn. Abraços Alberto FW24+Clip5.2e Quote Link to comment Share on other sites More sharing options...
gvc Posted October 24, 2007 Report Share Posted October 24, 2007 Entendo que a impressora esta compartilhada. Se vc conseguir capturar a porta: net use lpt2: \\\ /yes Após isso, tente rodar no prompt do DOS: dir /w > lpt2 Veja se sai alguma coisa na impressora capturada. Se sair, seu sistema deverá informar que a impressão é na LPT2. Vc pode acertar a captura para outra porta. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.