Récupérer la liste des imprimantes :
cbBuf est un entier long
pbNeeded est un entier long
pcReturned est un entier long
p2 est compose de
pServerName est un entier long
pPrinterName est un entier long
pShareName est un entier long
pPortName est un entier long
pDriverName est un entier long
pCommen est un entier long
pLocation est un entier long
pDevMode est un entier long
pSepFile est un entier long
pPrintProcessor est un entier long
pDatatype est un entier long
pParameters est un entier long
pSecurityDescriptor est un entier long
Attributes est un entier long
Priority est un entier long
DefaultPriority est un entier long
StartTime est un entier long
UntilTime est un entier long
Stat est un entier long
cJobs est un entier long
AveragePPM est un entier long
fin
ind est un entier
nomimp est une chaine asciiz de 128
port est une chaine asciiz de 128
ch est une chaine
appeldll32("winspool.drv","EnumPrintersA",0x6,null,2,null,cbbuf,&pbNeeded,&pcReturned)
hmem est un entier long = appeldll32("kernel32","GlobalAlloc",0x40,pbNeeded)
cbbuf = pbNeeded
si appeldll32("winspool.drv","EnumPrintersA",0x6,null,2,hmem,cbbuf,&pbNeeded,&pcReturned) alors
adr est un entier long = hmem
pour ind = 1 a pcReturned
appeldll32("kernel32","RtlMoveMemory",&p2,adr,84)
appeldll32("kernel32","RtlZeroMemory",&nomimp,128)
appeldll32("kernel32","RtlMoveMemory",&nomimp,p2.pPrinterName ,128)
appeldll32("kernel32","RtlZeroMemory",&port,128)
appeldll32("kernel32","RtlMoveMemory",&port,p2.pPortName ,128)
si taille(sansespace(nomimp))>0 alors
si etbinaire(p2.Attributes,4) alors
ch="Défaut"
sinon
ch=""
fin
listeajoute("COMBO2",port+"\"+nomimp+"\"+ch)
fin
adr+=84
fin
fin
appeldll32("kernel32","GlobalFree",hmem)
Afficher la liste des documents dans le spooler d'une imprimante :
imprimante est une chaine asciiz de 128="Nom de l'imprimante"
appeldll32( "shell32.dll" , "SHInvokePrinterCommandA" , handle() , 0 , &imprimante , null , 0 )
Note : Si imprimante réseau : 5 au lieu de 0 (le 1er) et inclure le nom du serveur dans imprimante
Ouvrir la boite de propriétés de l'imprimante :
imprimante est une chaine asciiz de 128="Nom de l'imprimante"
appeldll32( "shell32.dll" , "SHInvokePrinterCommandA" , handle() , 1 , &imprimante , null , 0 )
Imprimer une page de test :
imprimante est une chaine asciiz de 128="Nom de l'imprimante"
appeldll32( "shell32.dll" , "SHInvokePrinterCommandA" , handle() , 4 , &imprimante , null , 0 )