PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → WINSPOOL.DRV
WINSPOOL.DRV
Débuté par philippe.pasquali, 17 nov. 2004 11:50 - Aucune réponse
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 ?