TyttoSoft

DICAS | SOFTWARE | PROGRAMAÇÃO




Obter a quantidade de páginas que foram impressas


Para obter a quantidade de páginas que foram impressas a partir de um aplicativo Delphi, você pode usar a API do Windows para monitorar as impressões.

Você pode fazer isso usando a função FindFirstPrinterChangeNotification e FindNextPrinterChangeNotification para rastrear eventos de impressão e acompanhar o número de páginas impressas.

Aqui está um exemplo simples de como você pode fazer isso:

 
uses Windows, SysUtils, Forms, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private FPrinterHandle: THandle; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure PrintJobCallback(Actions: Cardinal; pPrinterNotifyInfo: PPrinterNotifyInfo; lParam: LPARAM); var i: Integer; begin for i := 0 to pPrinterNotifyInfo^.Count - 1 do begin if pPrinterNotifyInfo^.aData[i].Field = JOB_NOTIFY_FIELD_PAGES_PRINTED then begin Form1.Memo1.Lines.Add('Páginas impressas: ' + IntToStr(pPrinterNotifyInfo^.aData[i].FieldData.PagesPrinted)); end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin // Simula uma impressão Printer.BeginDoc; Printer.Canvas.TextOut(100, 100, 'Isso é um teste.'); Printer.EndDoc; end; procedure TForm1.FormCreate(Sender: TObject); var Notifications: array of TPrinterNotifyOptions; begin FPrinterHandle := FindFirstPrinterChangeNotification( Printer.Handle, PRINTER_CHANGE_JOB, 0, @Notifications[0] ); if FPrinterHandle <> 0 then RegisterJobNotification(Printer.Handle, PrintJobCallback, 0); end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin if FPrinterHandle <> 0 then FindClosePrinterChangeNotification(FPrinterHandle); end; end.

Neste exemplo:

No evento FormCreate, criamos uma notificação de alteração da impressora usando FindFirstPrinterChangeNotification e registramos a função de callback PrintJobCallback para rastrear eventos de impressão, incluindo o número de páginas impressas.

No evento Button1Click, simula-se uma impressão usando Printer.Canvas.TextOut e atualiza o contador de páginas impressas no callback.

No evento FormClose, fechamos a notificação de alteração da impressora quando o aplicativo é fechado.

Tenha em mente que este é apenas um exemplo básico para ilustrar o conceito de rastreamento de páginas impressas. Em um aplicativo real, você precisará adaptar e estender esse código para atender às suas necessidades específicas. Além disso, as permissões de segurança podem ser necessárias para acessar informações de impressão, dependendo do ambiente em que seu aplicativo é executado.



17/04/2026 05:04 Delphi 258


Política de privacidade

Utilizamos cookies e outras tecnologias semelhantes para melhorar a sua experiência no nosso site.

Ao continuar navegando, você declara que está de acordo com a nossa política de privacidade.

Copyright © TyttoSoft 2018 | Desenvolvido por www.TyttoSoft.com.br