Ver Mensaje Individual
  #4  
Antiguo 23-11-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Reputación: 10
marcoszorrilla Va por buen camino
Hola Román mira yo tengo estas funciones, que la verdad no las he utilizado mucho, así que mira a ver si te interesan:
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;
Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.

Última edición por rgstuamigo fecha: 08-11-2010 a las 20:53:44.
Responder Con Cita