azeredo 0 Denunciar post Postado Janeiro 29, 2009 Pessaol.. gostaria de saber se pelo delphi tem como eu interceptar o comando de impressão. Tipo.. quando eu mandar imprimir alguma coisa.. antes dessa informação chegar a impressora, como faço para pegar as informaçoes deste comando? Algum ideia de como fazer isso via delphi, vb ou c++? Compartilhar este post Link para o post Compartilhar em outros sites
Maikel Scheid 1 Denunciar post Postado Fevereiro 5, 2009 Olá Interceptar impressão, bom, vou adiantando que isto é bastante complicado, envolve muitos processo minuciosos de controles do windows, detalhes em que você precisa saber dominar muito bem o Delphi e conhecer todos os processos envolvidos no Windows... APIs, entre outros. Bom, eu iniciei um projeto destes, não consegui acabar, contabilizava impressões quando vinham separadamente ao servidor, mas há alguns sistemas que enviam 5, 8 jobs em um único instante, não dava outro, o sistema travava. O que eu usei foram as uses Printers e WinSpool Eu consegui um documento, no site da codegear (PBPrintersMonitorU), na verdade é um exemplo, uma unit de exemplo que tem vários processos que capturam as informações de spooler do Windows e também interceptam elas, como é o exemplo desta função, que deixa um job com status pausado: procedure JOBPrint.PausarImpressao(sPrinterName : String; IdJob : Integer); var lRet : LongBool; mhPrinter : THandle; paAll : PRINTER_DEFAULTS; begin paAll.DesiredAccess := PRINTER_ALL_ACCESS; OpenPrinter(PChar(sPrinterName), mhPrinter, nil); If mhPrinter <> 0 Then lRet := SetJob(mhPrinter, idJob, 0, nil, JOB_CONTROL_PAUSE); ClosePrinter(mhPrinter) end; Esta procedure recebe o nome da impressora na qual o Job foi enviado e o ID do mesmo, deixando-o pausado. Isto eu usava quando um novo documento caia na fila de impressão, mantia-o em pausa até finalizar o spool, capturava as informações dele como numero de páginas, nome do documento, usuário, estação de origem, entre outros, e após isso, libero a impressão (JOB_CONTROL_RESUME). Bom, espero que isso consilha lhe ajudar alguma coisa Att Compartilhar este post Link para o post Compartilhar em outros sites