- Delphiartiklar, tips, forum, länksamling - 

      

START | DELPHI | LÄNKARGÄSTBOK 




 Forum

Grundkurs
  »Introduktion
  »Snabbguide
  »Komponenter
  »Händelser
  »Strängar
  »Räkna med Delphi   »Egna typer
  »Selektion
  »Iteration
  »Menyer
  »Funktioner
  »Arraystrukturer

Tips & Tricks
  »Nya tips
  »Blandat
  »Databaser
  »Filer
  »Forms
  »Grafik
  »Internet
  »Komponenter
  »Matematik
  »Multimedia
  »Objekt/ActiveX
  »Skrivare
  »Strängar
  »System
  »Mest lästa tips

Artiklar
  »Delphi och ADO
  »Bygga en DLL
  »Skapa en enkel rapport
  »Hantera registret
  »Enheter, units
  »Klassen TCanvas
  »Använd LookUp Controls

 Nya tips
 Lägg till tips
 Delphilänkar
 Gästbok

 

Lista jobb i skrivarkö Kategori: Skrivare
Inlagt: 2002-11-26
Läst: 1355
Inlagt av: Staffan Berg
Beskrivning
Detta kodexempel visar upp en lista över de jobb som står i skrivarkön. 
Kod
uses
 Winspool, Printers;

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 jobs in queue')
  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;

 
 
© Copyright 2005 - Staffan Berg
- Alla rättigheter förbehålles -