Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   monitoriar impresiones (https://www.clubdelphi.com/foros/showthread.php?t=15948)

acertij022 10-11-2004 16:14:07

monitoriar impresiones
 
hola delphiano necesito ayuda por favor ya que no consigo información para monitoriar la impresora osea saber cuantas impresiones ya se realizaron si fueron en color o blanco y negro de que maquina fue, etc; lo único que he encontrado fue lo siguiente:
Código Delphi [-]
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls,Printers,WinSpool;
.....
function GetCurrentPrinterHandle: THandle;
var
  Device, Driver, Port: array[0..255] of Char;
  hDeviceMode: THandle;
begin
  Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
  if not OpenPrinter(@Device, Result, nil) then
    RaiseLastWin32Error;
end;

function SavePChar(p: PChar): PChar;
const
  error: PChar = 'Nil';
begin
  if not Assigned(p) then
    Result := error
  else
    Result := p;
end;

procedure TForm1.Button1Click(Sender: TObject);
type
  TJobs = array [0..1000] of JOB_INFO_1;
  PJobs = ^TJobs;
var
  hPrinter: THandle;
  bytesNeeded, numJobs, i: Cardinal;
  pJ: PJobs;
begin
  hPrinter := GetCurrentPrinterHandle;
  try
    EnumJobs(hPrinter, 0, 1000, 1, nil, 0, bytesNeeded,
      numJobs);
    pJ := AllocMem(bytesNeeded);
    if not EnumJobs(hPrinter, 0, 1000, 1, pJ, bytesNeeded,
      bytesNeeded, numJobs) then
      RaiseLastWin32Error;

    memo1.Clear;
    if numJobs = 0 then
      memo1.Lines.Add('No hay trabajos en la cola')
    else
      for i := 0 to Pred(numJobs) do
        memo1.Lines.Add(Format('Printer %s, Job %s, Status (%d): %s',
          [SavePChar(pJ^[i].pPrinterName), SavePChar(pJ^[i].pDocument),
          pJ^[i].Status, SavePChar(pJ^[i].pStatus)]));
  finally
    ClosePrinter(hPrinter);
  end;
end;
//###############################################################################
//Problemas a resolver:
//1)No contabliza las paginas realmente impresas
//2)Solo muestra la cantidad de hojas del documento
//3)No las multiplica por la cantidad de copias pedida
//4)Si imprimo de una pc, en la impresora de otra pc, ni siquiera aparece la cantidad de copias del documento
//5)_JOB_INFO_1 _JOB_INFO_2:
//  a)PagesPrinted  solo da el % impreso del documento. Aparece 12..96, porque el valor
//    lo toma el timer, asi que no llega a tomar 99 y 100%
//  b)El chequeo de pStatus,Status]=['',0],[JOB_STATUS_PRINTING,?] porque tambien depende del timer
//6)Se busco en otras API,STRUCT,internet la informacion que se necesita y no se la encontro
//###############################################################################
Espero alguna respuesta con ansia como dato uso Delphi6 Enterprise con windows 2000 :confused:

acertij022 18-11-2004 13:23:16

Mil disculpa solo genere este hilo para que aparezca de nuevo en los primeros, esque estoy un poco desesperado. :confused:


La franja horaria es GMT +2. Ahora son las 09:17:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi