Por que o programa 16bit DOS não imprime em compartilhamento de rede

5

Eu tenho um aplicativo DOS (em execução nos Serviços de Terminal, Win Server 2008 Standard 6.06002 SP2). Preciso imprimir na minha impressora compartilhada no meu computador. %código%. Quando eu "copio file.txt lpt2", ele funciona perfeitamente. Quando meu aplicativo imprime, mostra que a impressora não foi encontrada. O aplicativo DOS aponta para lpt2 e usa hppcl. Eu era capaz de imprimir em minha própria impressora quando o aplicativo DOS residia em minha máquina (Win7x32). Alguma pista?

    
por simon tan 24.12.2014 / 16:57

4 respostas

4

Cara, me desculpe. Estive lá, fiz isso.

A impressora aparece quando você faz um net use ?

Consegui obter o horrível programa DOS de 16 bits no laboratório do aluno para imprimir com net use lpt2 \servername\printer . Eu também recebi um programa horrível que não aceitava as portas de impressora jetdirect / TCPIP, mas fazia aceitar compartilhamentos de rede para imprimir compartilhando a impressora como \127.0.0.1\printername$ e imprimindo para isso. Em outras palavras: Certifique-se de que a impressora realmente apareça com net use , certifique-se de que a impressora local seja compartilhada (somente para seu usuário local, a menos que você realmente queira compartilhá-la além do escopo de seu horrível programa de 16 bits, e se você nomeá-lo com um $, ele ficará oculto), e use \127.0.0.1 como o servidor se for necessário.

Boa sorte!

    
por 24.12.2014 / 18:39
4

Muitas pessoas confundem um aplicativo de modo "caractere" ou "console" para "DOS". Se você tiver um aplicativo "DOS" em execução no Server 2008R2, provavelmente terá um aplicativo de caracteres de 32 bits.

Se fosse um aplicativo DOS de 16 bits, você não seria capaz de executá-lo no Server2008R2, que é de 64 bits, e a única coisa que ele sabe fazer com aplicativos de 16 bits é lançar um erro.

Agora, se este aplicativo estiver tentando usar rotinas de impressão de 16 bits, a má notícia é que ele não funcionará, pelo menos não enquanto o aplicativo estiver sendo executado no Server 2008R2.

    
por 25.12.2014 / 01:32
3

Eu realmente tenho uma configuração semelhante por causa de certos softwares de fabricação ...

O culpado usual é que os aplicativos esperam que a impressora esteja na lista do computador local. O outro culpado é que o aplicativo espera que a impressora seja um nome muito específico ou não o encontrará. Sem conhecer o software, é difícil dizer exatamente qual é o problema, mas eu começaria adicionando a impressora compartilhada ao seu servidor TS e nomeando-a exatamente como está em sua máquina local - tente imprimir usando a configuração da porta lpt.

    
por 24.12.2014 / 17:53
0

Eu posso sugerir uma alternativa que usamos para imprimir a partir de um programa DOS de 16 bits amplamente utilizado na minha empresa: A.N.D. O aplicativo gratuito DOSPrint da tecnologia funcionou perfeitamente para nós nos últimos dez anos. Enquanto fonte fechada, é apenas 63KB, funciona como um serviço de sistema ou aplicativo de bandeja por usuário, redireciona o fluxo LPT do subsistema DOS para qualquer fila de impressão do Windows incluindo impressoras compartilhadas e tem uma licença liberal ("livre para uso geral"). Sem restrições"). Verifique o link Downloads / Software gratuito.

Outra opção - se você tem alguma experiência em programação - é escrever seu próprio redirecionador trivial LPT-to-whatever. No .NET, você usará chamadas P / Invoke para QueryDosDevice e DefineDosDevice para redirecionar um LPT de qualquer aplicativo DOS para um arquivo ou pipe nomeado:

<DllImport("kernel.dll", CharSet:=CharSet.Unicode, entrypoint:="DefineDosDeviceW")>
Public Shared Function DefineDosDevice(ByVal dwFlags As UInt32, ByVal lpDeviceName As String, ByVal lpTargetPath As String) As Boolean
End Function
    
por 27.12.2014 / 03:49

Tags