Ce forum est maintenant fermé, seule cette archive statique reste consultable.
  FORUM Rue-Montgallet.com
  Programmation
  Delphi - Pascal

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

Bas de page
Auteur Sujet :

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

n°6309
wam
toujours là!
Profil : Vieux de la vieille
Posté le 21-01-2004 à 09:38:17  
 

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;


 
En fait le parametre status reste tt le tps a (desole clavier qwerty :D) 0 quoique je fasse sur l'imprimante...
Si quelqu'un a des infos sur ca :p
Merci d'avance!


Message édité par wam le 21-01-2004 à 09:46:02
mood
Pub
Posté le 21-01-2004 à 09:38:17  
 

n°6313
wam
toujours là!
Profil : Vieux de la vieille
Posté le 21-01-2004 à 14:38:42  
 

ok apres lecture de cet article :
http://support.microsoft.com/defau [...] 0129&#034; la recuparation de ce type de status est pas interessante :D super bill


Message édité par wam le 21-01-2004 à 14:39:19
n°6361
wam
toujours là!
Profil : Vieux de la vieille
Posté le 22-01-2004 à 13:24:17  
 

Personne ne connait 1 prog ki donne l'etat d'imprimante et pas l'etat d'un job d'impression :p

  FORUM Rue-Montgallet.com
  Programmation
  Delphi - Pascal

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

© 2000-2024 Forum.rue-montgallet.com - Tous droits réservés