[delphi 6]Status imprimante via API windows...

Status imprimante via API windows... [delphi 6] - Delphi/Pascal - Programmation

Marsh Posté le 20-01-2004 à 10:33:03    

Bonjour tt le monde
 
J'ai 1 petit prog qui recupere certaines infos des imprimantes connectees sur le pc(usb,lpt etc...)
Mais j'ai 1 probleme pr recuperer le status de l'imprimante (online, offline, impression en cours, plus de papier etc....)
 
Mon code :
 

Code :
  1. function TForm1.GetPrinterInfo2(NumPrinter: Integer; param:String): string;
  2. var
  3.   ADevice, ADriver, APort: array[0..100] of Char;
  4.   HDeviceMode, HPrinter: THandle;
  5.   PrinterInfo2: PPrinterInfo2;
  6.   Size: DWORD;
  7. begin
  8.   param:=AnsiUppercase(Param);
  9.   //ZeroMemory(@ADevice, SizeOf(ADevice));
  10.   // Get the device name of the current printer
  11.   //Printer.GetPrinter(ADevice, ADriver, APort, HDeviceMode);
  12.   // Initialise some memory for the TPrinterInfo2 structure
  13.   Size := 0;
  14.   GetMem(PrinterInfo2, Size);
  15.   try
  16.     // Get a handle to the current printer
  17.     if not OpenPrinter(pchar(printer.Printers[NumPrinter]), HPrinter, nil) then
  18.     begin
  19.       ShowMessage('Error getting handle to current printer.' + #13 +
  20.         SysErrorMessage(GetLastError));
  21.       Exit;
  22.     end;
  23.     // Get size of printer info structure
  24.     Winspool.GetPrinter(HPrinter, 2, PrinterInfo2, Size, @Size);
  25.     // Allocate memory for printer info structure
  26.     ReAllocMem(PrinterInfo2, Size);
  27.     // Get printer info for current printer
  28.     if not Winspool.GetPrinter(HPrinter, 2, PrinterInfo2, Size, @Size) then
  29.     begin
  30.       ShowMessage('Error getting current printer info.' + #13 +
  31.         SysErrorMessage(GetLastError));
  32.       Exit;
  33.     end;
  34.     with PrinterInfo2^ do
  35.     begin
  36.         if param='ORIENTATION'  then
  37.                 if printer.Orientation=poPortrait then         // Portrait=0 et Paysage=1
  38.                         result:='0'
  39.                 else
  40.                         result:='1';
  41.         if param='COPIES'       then result:=IntToStr(Printer.Copies);
  42.         if param='PRINTERNAME'  then result:=pPrinterName;
  43.         if param='DRIVERNAME'   then result:=pDriverName;
  44.         if param='PORTNAME'     then result:=pPortName;                             // Ex: LPT1
  45.         if param='NBJOB'        then result:=IntToStr(cJobs);                // Nombre de Job en cours
  46.         if param='STATUS'       then result:=IntToStr(Status);               // Entier dont la valeur est décrite dans winSpool.pas
  47.         if param='PAPERSIZE'    then result:=IntToStr(pDevMode.dmPaperSize); // Entier correspondant à un format identifié dans windows.pas
  48.     end;
  49.     finally
  50.           FreeMem(PrinterInfo2);
  51.           if HPrinter <> 0 then
  52.                 ClosePrinter(HPrinter);
  53.     end
  54.    end;


Si quelqu'un a des infos sur ca :p
Merci d'avance!


Message édité par wam le 20-01-2004 à 10:33:45
Reply

Marsh Posté le 20-01-2004 à 10:33:03   

Reply

Marsh Posté le 20-01-2004 à 13:17:02    

:cry:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed