Jump to content
Fivewin Brasil

Impressão remota


netsys

Recommended Posts

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...