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
| PROCEDURE Listeimprimantes()
x_PRINTER_INFO_2 est une structure
pServerName est un entier
pPrinterName est un entier
pShareName est un entier
pPortName est un entier
pDriverName est un entier
pComment est un entier
pLocation est un entier
pDevMode est un entier
pSepFile est un entier
pPrintProcessor est un entier
pDatatype est un entier
pParameters est un entier
pSecurityDescriptor est un entier
Attributes est un entier
Priority est un entier
DefaultPriority est un entier
StartTime est un entier
UntilTime est un entier
Status est un entier
cJobs est un entier
AveragePPM est un entier
END
Level, pcbNeeded, pcReturned, Ret, i , Flag sont des entiers
tPRINTER est un tableau de 3000 x_PRINTER_INFO_2
Buf est une chaîne ASCIIZ sur 1024
ComputerName est une chaîne ASCIIZ sur 128 = "\\" + NetNomMachine()
ListeImprimante est une chaîne = ""
Flag = OUBinaire(PRINTER_ENUM_LOCAL,PRINTER_ENUM_CONNECTIONS)
Level = 2; pcbNeeded = 0; pcReturned = 0
// Appel une fois la fonction avec 0 pour connaitre le nombre d'octet nessecaire (renvoyé dans pcNeeded)
API("winspool.drv","EnumPrintersA", Flag, &ComputerName, Level, &tPRINTER, 0 , &pcbNeeded, &pcReturned)
// Appel une seconde fois avec la bonne valeur
Ret = API("winspool.drv","EnumPrintersA", Flag, &ComputerName, Level, &tPRINTER, pcbNeeded, &pcbNeeded, &pcReturned)
IF Ret=1 THEN
// C'est bon pcReturned contient le nombre d'imprimante donc le nombre de structure valide dans le tableau
FOR i=1 TO pcReturned
IF ListeImprimante <> "" THEN ListeImprimante += CRLF
Transfert(&Buf,tPRINTER[i]:pServerName,1023); ListeImprimante += Buf + "\"
Transfert(&Buf,tPRINTER[i]:pShareName,1023); ListeImprimante += Buf
END
END
RENVOYER ListeImprimante |
Partager