1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
PROCEDURE PR_PRINTER_SetDocumentProperties(sNomImprimante est une chaîne)
MyPRINTER_INFO_2 est un STPRINTER_INFO_2
MyPrinterDefaults est un STPRINTER_DEFAULTSA
bufMyPrinterBuffer est un Buffer
MyDEVMODE est un STDEVMODE
bufMyDevModeBuffer est un Buffer
nReturnValue est un entier
bufBuffer est un Buffer
szPrinterName est une chaîne ASCIIZ sur 128
szDriverName est une chaîne ASCIIZ sur 128
nPrinterHandle est un entier système
// Récupération d'un buffer contenant les informations pour "nourrir" une structure PRINTER_INFO_2
bufMyPrinterBuffer = FU_PRINTER_GetPrinter(sNomImprimante)
// Transfert des données vers les structures adéquates
Transfert(&MyPRINTER_INFO_2, &bufMyPrinterBuffer, Dimension(MyPRINTER_INFO_2))
// Récupération du nom de l'imprimante et du driver
szPrinterName = sNomImprimante
Transfert(&szDriverName, MyPRINTER_INFO_2:pDriverName, 128)
MyPrinterDefaults:pDatatype = Null
MyPrinterDefaults:pDatatype = Null
MyPrinterDefaults:DesiredAccess = PRINTER_ALL_ACCESS
// Obtention du handle de l'imprimante
nReturnValue = API("WINSPOOL.DRV","OpenPrinterA",&szPrinterName,&nPrinterHandle, &MyPrinterDefaults)
// Récupération du DEVMODE à partir de PRINTER_INFO_2
Transfert(&MyDEVMODE, MyPRINTER_INFO_2:pDevMode, Dimension(MyDEVMODE))
// Changement du nombre de copies à imprimer
MyDEVMODE:dmFields = DM_COPIES
MyDEVMODE:dmCopies = 4
// Affectation du DEVMODE modifié à la structure PRINTER_INFO_2
Transfert(MyPRINTER_INFO_2:pDevMode, &MyDEVMODE, Dimension(MyDEVMODE))
// Mise à jour des informations (temporaire) du driver de l'imprimante
nReturnValue = API("WINSPOOL.DRV", "DocumentPropertiesA", Null, nPrinterHandle, &szPrinterName, MyPRINTER_INFO_2:pDevMode, MyPRINTER_INFO_2:pDevMode, DM_IN_BUFFER | DM_OUT_BUFFER)
nReturnValue = API("WINSPOOL.DRV","SetPrinterA",nPrinterHandle, 2, &MyPRINTER_INFO_2, 0)
//************ INCLU POUR TEST ****************************************
MyDEVMODE:dmCopies = 0
// Récupération d'un buffer contenant les informations pour "nourrir" une structure PRINTER_INFO_2
bufMyPrinterBuffer = FU_PRINTER_GetPrinter(sNomImprimante)
// Transfert des données vers les structures adéquates
Transfert(&MyPRINTER_INFO_2, &bufMyPrinterBuffer, Dimension(MyPRINTER_INFO_2))
Transfert(&MyDEVMODE, MyPRINTER_INFO_2:pDevMode, Dimension(MyDEVMODE))
Info(MyDEVMODE:dmCopies)
//*********************************************************************
// Fermeture de l'imprimante
API("WINSPOOL.DRV","ClosePrinter",nPrinterHandle)
CAS EXCEPTION:
nReturnValue = ErreurInfo(errCodeSystème)
sErrorMessage est une chaîne = ErreurInfo(errMessageSystème)
Info("Error Code : " +nReturnValue +RC +"Error Message : " +sErrorMessage) |
Partager