Como usar PASSTHROUGH escape para enviar dados diretamente para impressora

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 96795
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sumário
Usando a função de Windows API Escape(), seu aplicativo pode passar dados diretamente para a impressora. Se o driver de impressora oferecer suporte a escape de impressora PASSTHROUGH, você pode usar a função Escape() e de escape de impressora PASSTHROUGH para enviar os códigos de idioma nativo de impressora para o driver de impressora.

Impressora escapes como PASSTHROUGH permitem que aplicativos acessar determinados recursos de dispositivos de saída que não estão diretamente disponíveis por meio a interface gráfica de dispositivo (GDI). Escape de impressora a PASSTHROUGH permite ao aplicativo enviar dados diretamente para a impressora, ignorando o código de driver de impressão padrão.
Mais Informações
Um driver de impressora que suporta o escape de impressora PASSTHROUGH não adiciona os códigos de idioma nativo impressora ao fluxo de dados enviado à impressora, portanto, você pode enviar dados diretamente para a impressora. No entanto, a Microsoft recomenda que os aplicativos não realizar funções que consomem memória de impressora, tais como fazer download de uma fonte ou uma macro.

O programa de exemplo abaixo envia códigos PCL nativos para a impressora para alterar a orientação da página e a bandeja de papel. Um Hewlett-Packard LaserJet é a impressora padrão assumido.

Observação: Isso não é uma solução recomendada. Para obter uma melhor solução para 32 bits, consulte o seguinte artigo na Base de dados de Conhecimento da Microsoft:
138594: como enviar dados brutos para uma impressora usando a API do Win32

Uma observação importante

A função de Windows API Escape() é fornecida no Windows versões 3.0 e 3.1 para compatibilidade com versões anteriores do Microsoft Windows. Aplicativos devem para usar as funções GDI DeviceCapabilities() e ExtDeviceMode() em vez da função Escape(), mas nem DeviceCapabilities() ExtDeviceMode() pode ser chamado diretamente a partir do Visual Basic. Isso ocorre porque eles são exportados pelo driver da impressora, não pelo GDI do Windows. A única maneira de usar ExtDeviceMode() ou DeviceCapabilities() no Visual Basic é criar uma DLL e chamá-los de lá.

Foram relatórios de problemas ao usar escape PASSTHROUGH com o driver HPPCL5A.DRV. Essa é a versão do driver da impressora para a série HP LaserJet III que acompanha o Windows 3.1. Uma versão mais recente do driver (HPPCL5MS.DRV), que não possui problemas conhecidos com escape PASSTHROUGH, está disponível na biblioteca de driver de Windows (WDL). Para obter o driver mais recente para a série HP LaserJet III, baixe o arquivo auto-extraível HPPCL5.EXE do WDL.

Passos para criar exemplo

  1. Inicie o Visual Basic ou no menu File, escolha New Project (ALT, F, N) se o Visual Basic já estiver sendo executado. O Form1 é criado por padrão.
  2. Adicione o seguinte código à seção declarações gerais de Form1:
       ' Enter the entire Declare statement on one, single line.   Private Declare Function Escape Lib "Gdi" (ByVal Hdc%, ByVal nEscape%,      ByVal ncount%, ByVal indata$, ByVal oudata as Any) As Integer   Const PASSTHROUGH = 19   Const RevLandScape = "&l3O" ' PCL command to change Paper                               ' orientation to Reverse Landscape.   Const Portrait = "&l0O"     ' PCL command to change paper                               ' orientation to Portrait.   Const ManualFeed = "&l3H"   ' PCL command to change Paper Bin                               ' to Manual Feed Envelope.   Const AutoFeed = "&l1H"     ' PCL command to change Paper Bin                               ' to Paper Tray AutoFeed						
  3. Adicione uma caixa de listagem (Lista1) ao Form1.
  4. Adicione o seguinte código ao procedimento de evento Form_Load do Form1:
       Sub Form_Load ()     List1.AddItem "HP/PCL Reverse Landscape"     List1.AddItem "HP/PCL Portrait"     List1.AddItem "HP/PCL Manual Feed Envelope"     List1.AddItem "HP/PCL Paper Tray Auto Feed"   End Sub						
  5. Adicione o seguinte código ao procedimento de evento List1_Click:
       Sub List1_Click   Select Case List1.ListIndex      Case 0:         PCL_Escape$ = Chr$(27) + RevLandScape      Case 1:         PCL_Escape$ = Chr$(27) + Portrait      Case 2:         PCL_Escape$ = Chr$(27) + ManualFeed      Case 3:         PCL_Escape$ = Chr$(27) + AutoFeed   End Select   ' Enter the following two lines as one, single line:   PCL_Escape$ = Chr$(Len(PCL_Escape$) MOD 256)      + Chr$(Len(PCL_Escape$) \ 256) + PCL_Escape$   Printer.Print ""   Result% = Escape%(Printer.hDC, PASSTHROUGH, 0, PCL_Escape$, 0&)   Select Case Result%      ' Enter each Case statement on one, single line.      Case Is < 0: MsgBox "The PASSTHROUGH Escape is not         supported by this printer driver.", 48      Case 0: MsgBox "An error occurred sending the escape         sequence.", 48      Case Is > 0: MsgBox "Escape Successfully sent.         Sending test printout to printer."      Printer.Print "Test case of "; List1.Text      Printer.EndDoc   End Select   End Sub						
  6. A partir do menu Executar, escolha Start (ALT, R, S) para executar o programa. Lista1 é preenchido com quatro seqüências de escape para enviar para a impressora.
  7. Selecione qualquer uma das opções na caixa de listagem. Será exibida uma caixa de mensagem para indicar o êxito da operação.
Se o driver de impressora não oferecer suporte a escape de impressora PASSTHROUGH, você deve usar as funções DeviceCapabilities() e ExtDevMode().
kbVBp100 kbVBp200 kbVBp300

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 96795 - Última Revisão: 12/04/2015 09:25:04 - Revisão: 2.1

Microsoft Visual Basic 2.0 Standard Edition, Microsoft Visual Basic 3.0 Professional Edition, Microsoft Visual Basic 2.0 Professional Edition, Microsoft Visual Basic 3.0 Professional Edition, Microsoft Visual Basic 1.0 Standard Edition

  • kbnosurvey kbarchive kbmt kbhowto kbprint KB96795 KbMtpt
Comentários
ERROR: at System.Diagnostics.Process.Kill() at Microsoft.Support.SEOInfrastructureService.PhantomJS.PhantomJSRunner.WaitForExit(Process process, Int32 waitTime, StringBuilder dataBuilder, Boolean isTotalProcessTimeout)