wam toujours là! Profil : Vieux de la vieille | 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 :
- function TForm1.GetPrinterInfo2(NumPrinter: Integer; param:String): string;
- var
- ADevice, ADriver, APort: array[0..100] of Char;
- HDeviceMode, HPrinter: THandle;
- PrinterInfo2: PPrinterInfo2;
- Size: DWORD;
- begin
- param:=AnsiUppercase(Param);
- //ZeroMemory(@ADevice, SizeOf(ADevice));
- // Get the device name of the current printer
- //Printer.GetPrinter(ADevice, ADriver, APort, HDeviceMode);
- // Initialise some memory for the TPrinterInfo2 structure
- Size := 0;
- GetMem(PrinterInfo2, Size);
- try
- // Get a handle to the current printer
- if not OpenPrinter(pchar(printer.Printers[NumPrinter]), HPrinter, nil) then
- begin
- ShowMessage('Error getting handle to current printer.' + #13 +
- SysErrorMessage(GetLastError));
- Exit;
- end;
- // Get size of printer info structure
- Winspool.GetPrinter(HPrinter, 2, PrinterInfo2, Size, @Size);
- // Allocate memory for printer info structure
- ReAllocMem(PrinterInfo2, Size);
- // Get printer info for current printer
- if not Winspool.GetPrinter(HPrinter, 2, PrinterInfo2, Size, @Size) then
- begin
- ShowMessage('Error getting current printer info.' + #13 +
- SysErrorMessage(GetLastError));
- Exit;
- end;
- with PrinterInfo2^ do
- begin
- if param='ORIENTATION' then
- if printer.Orientation=poPortrait then // Portrait=0 et Paysage=1
- result:='0'
- else
- result:='1';
- if param='COPIES' then result:=IntToStr(Printer.Copies);
- if param='PRINTERNAME' then result:=pPrinterName;
- if param='DRIVERNAME' then result:=pDriverName;
- if param='PORTNAME' then result:=pPortName; // Ex: LPT1
- if param='NBJOB' then result:=IntToStr(cJobs); // Nombre de Job en cours
- if param='STATUS' then result:=IntToStr(Status); // Entier dont la valeur est décrite dans winSpool.pas
- if param='PAPERSIZE' then result:=IntToStr(pDevMode.dmPaperSize); // Entier correspondant à un format identifié dans windows.pas
- end;
- finally
- FreeMem(PrinterInfo2);
- if HPrinter <> 0 then
- ClosePrinter(HPrinter);
- end
- end;
|
En fait le parametre status reste tt le tps a (desole clavier qwerty ) 0 quoique je fasse sur l'imprimante...
Si quelqu'un a des infos sur ca
Merci d'avance! Message édité par wam le 21-01-2004 à 09:46:02
|