Ir para conteúdo
Fórum Script Brasil
  • 0

Api Enumjob


Vader

Pergunta

Olá pessoal,

Estou usando a API EnumJob para verificar os trabalhos da impressora. Mas só estou conseguindo verificar da impressora padrão, alguém saberia me dizer como faço para ver os trabalhos de uma segunda impressora que não está definida com padrão?

Desde já agradeço.

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Gray,

Ow cara, p*** que alivio, pelo menos tem como.... mas vou precisar abusar dos seus conhecimentos..

Abaixo eu tenho o codigo que to usando... eu tentei mudar a letra A p/ B para ver se era aí, mas não rolou! Será que você poderia me ajudar!!!

Grande Abraço.

'Aqui eu declaro
Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, pDefault As Any) As Long
Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Private Declare Function EnumJobs Lib "winspool.drv" Alias "EnumJobsA" (ByVal hPrinter As Long, ByVal FirstJob As Long, ByVal NoJobs As Long, ByVal Level As Long, pJob As Any, ByVal cdBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
Private NumeroTrabalhos As Integer


'Load do código! Nesse código não está sendo exibido em lugar nenhum! Mas eu preciso mesmo mudar para a segunda impressora!!!

Private Sub Form_Load()

 Dim hPrinter As Long, lNeeded As Long, lReturned As Long
    Dim lJobCount As Long
    OpenPrinter Printer.DeviceName, hPrinter, ByVal 0&
    EnumJobs hPrinter, 0, 99, 1, ByVal 0&, 0, lNeeded, lReturned
    If lNeeded > 0 Then
        ReDim byteJobsBuffer(lNeeded - 1) As Byte
        EnumJobs hPrinter, 0, 99, 1, byteJobsBuffer(0), lNeeded, lNeeded, lReturned
        If lReturned > 0 Then
            lJobCount = lReturned
        Else
            lJobCount = 0
        End If
    Else
        lJobCount = 0
    End If
    
    ClosePrinter hPrinter
    
End Sub

Link para o comentário
Compartilhar em outros sites

  • 0

Esta daqui é a linha-chave:

OpenPrinter Printer.DeviceName, hPrinter, ByVal 0&
Veja que Printer é um objeto do VB que representa a impressora padrão. No caso ali, você está passando o nome dela (DeviceName). Basta que você passe o nome de outra para que hPrinter passe a apontar para esta. E é hPrinter que é utilizado daquela linha em diante para identificar a impressora. Você pode obter o nome de todas elas fazendo assim:
    Dim impressora As Printer
    
    For Each impressora In Printers
        Debug.Print impressora.DeviceName
    Next

Qualquer um dos nomes que aparecerem na janela Imediata (CTRL+G) pode ser passado para a função.

Certo? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...