| Posté le 17 novembre 2004 - 11:50 |
Je désire ré-imprimer un fichier PDF J'utiliser la commande : LanceAppliAssociée(NomDuFichierPdf,"print") Acrobat reader ce lance, ouvre le fichier et imprime le document mais ne se ferme pas automatiquement....
J'ai pensé utilisé les API de winspool.drv Je look le moment ou le fichier arrive et repart. en matant le nombre de job présent dans le spooleur de l'imprimante avant l'impression et j'attend pour fermer acrobat reader avec IF ExeLancé("AcroRd32.exe") THEN ExeTermine("AcroRd32.exe") que le nombre de job s'incréménte puis se décrémente (avec timeout au cas ou !)
Pour connaître le nombre de job présent j'utilise la fonction suivante :
FUNCTION GetJobInPrinter() NombreDeJob est un entier = 0
pPrinterName est une chaîne ASCIIZ sur 256 = iInfoImprimante() phPrinter est un entier = 0 pJob est une chaîne ASCIIZ sur 10240 cbBuf est un entier = 0 pcbNeeded est un entier = 0 pcReturned est un entier = 0
// Ouverture du lien vers l'imprimante phPrinter = handle sur l'imprimante IF API( "winspool.drv" ,"OpenPrinterA", pPrinterName, &phPrinter, Null) <> 0 THEN // Demande combien il faut d'octet pour avoir le resultat API("winspool.drv", "EnumJobsA", phPrinter, 0, 99, 1, &pJob, 0, &pcbNeeded, &pcReturned) IF pcbNeeded>0 THEN cbBuf = pcbNeeded IF API("winspool.drv", "EnumJobsA", phPrinter, 0, 99, 1, &pJob, cbBuf, &pcbNeeded, &pcReturned)<>0 THEN NombreDeJob = pcReturned END END API("winspool.drv", "ClosePrinter", phPrinter) END RENVOYER NombreDeJob
Pas contre je n'arrive pas à recupérer les informations détaillés de chacun des job.... qui normalement sont mis dans un buffer qui contient un tableau de structure pointé mis dans pJob Chaque structure (nombre variable mais dons le nombre d'octet est mis dans pcbNeeded ) est de type JOB_INFO_1 (dans mon cas)
typedef struct _JOB_INFO_1 { DWORD JobId; LPTSTR pPrinterName; LPTSTR pMachineName; LPTSTR pUserName; LPTSTR pDocument; LPTSTR pDatatype; LPTSTR pStatus; DWORD Status; DWORD Priority; DWORD Position; DWORD TotalPages; DWORD PagesPrinted; SYSTEMTIME Submitted; } JOB_INFO_1, *PJOB_INFO_1;
Quelqu'un as-t-il une idée ? |
| |
| |
|