Get number of printer's jobs

Windows uses WM_SPOOLERSTATUS, when we add or remove printer's jobs. So, we will hook this message. Implementation of this idea is so:

type
  TForm1 = class(TForm)
    Label1: TLabel;
  private
    procedure WM_SpoolerStatus(var Msg: TWMSPOOLERSTATUS); 
      message WM_SPOOLERSTATUS;
  public
  end;

...

procedure TForm1.WM_SpoolerStatus(var Msg: TWMSpoolerStatus);
begin
  Label1.Caption:=IntToStr(Msg.JobsLeft);
end;