PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → Listes des imprimantes
Listes des imprimantes
Débuté par Percapita, 19 juin 2003 14:09 - 5 réponses
Posté le 19 juin 2003 - 14:09
Comment obtenir la listes des imprimantes installé sur mon poste ?
API ?
Posté le 23 juin 2003 - 10:23
"Percapita" <f.lambour@everlog.com> a écrit dans le message de
news:3ef196fc@news....
Comment obtenir la listes des imprimantes installé sur mon poste ?
API ?




Bonjour,

Avec iListeImprimante() tout simplement.

Sincères salutations
--
Jean-Claude FLAJOULOT
Sécurité, Conseil & Biométrie

SCetB@wanadoo.fr
Posté le 23 juin 2003 - 10:37
"Percapita" <f.lambour@everlog.com> a écrit dans le message de
news:3ef196fc@news....
Comment obtenir la listes des imprimantes installé sur mon poste ?
API ?




Bonjour,

Dans mon message précédent, j'ai indiqué iListeImprimante(), cette fonction
n'existe pas sous 5.5, mais vous pouvez utiliser iConfigure().

Sincères salutations
--
Jean-Claude FLAJOULOT
Sécurité, Conseil & Biométrie

SCetB@wanadoo.fr
Posté le 23 juin 2003 - 16:53
I_configure() appelle une boite de dialogue et ce n'est pas ce dont j'ai
besoin.
Pour info j'ai utilisé l'API EnumPrintersA (c'est pas de la tarte...)
"JCF1" <flajoulot.jean-claude@wanadoo.fr> a écrit dans le message de
news:3ef6ab7d$1@news....

"Percapita" <f.lambour@everlog.com> a écrit dans le message de
news:3ef196fc@news....
Comment obtenir la listes des imprimantes installé sur mon poste ?
API ?




Bonjour,

Dans mon message précédent, j'ai indiqué iListeImprimante(), cette

fonction
n'existe pas sous 5.5, mais vous pouvez utiliser iConfigure().

Sincères salutations
--
Jean-Claude FLAJOULOT
Sécurité, Conseil & Biométrie

SCetB@wanadoo.fr



Posté le 23 juin 2003 - 18:07
"Percapita" <f.lambour@everlog.com> a écrit dans le message de
news:3ef703a4$1@news....
I_configure() appelle une boite de dialogue et ce n'est pas ce dont j'ai
besoin.


Bonjour,

Comme vous n'aviez pas précisé ce dont vous aviez besoin, j'ai donc donné
cette info, car dans la boite de dialogue vous avez dans la combo << Nom :
>> la liste des imprimantes installées sur le poste.

Pour EnumPrintersA, voici le code :

RetourFonction est un booléen
Flags, Level, pPrinterEnum, cbBuf, pcbNeeded, pcReturned sont des entiers
Name est un entier // Il est aussi possible de spécifier directement une
chaîne
RetourFonction=API("WINSPOOL.DRV","EnumPrintersA",Flags,Name,Level,pPrinterE
num,cbBuf,pcbNeeded,pcReturned)

Sincères salutations
--
Jean-Claude FLAJOULOT
Sécurité, Conseil & Biométrie

SCetB@wanadoo.fr
Posté le 25 juin 2003 - 11:01
J'utilise ceci, récupéré je ne sais plus où.
La procédure que j'ai faite remplit une table mémoire TABLE_IMP avec le
nom des imprimantes.

// Recupere la liste des imprimantes disponible sur le poste et remplit
la combo LISTE_IMP
Procédure Alimenter_Imprimantes()

LOCAL
cbBuf est un entier long
pbNeeded est un entier long
pcReturned est un entier long
lIndice 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,&pbNeede
d,&pcReturned)
hmem est un entier long =
appeldll32("kernel32","GlobalAlloc",0x40,pbNeeded)
cbbuf = pbNeeded
si
appeldll32("winspool.drv","EnumPrintersA",0x6,null,2,hmem,cbbuf,&pbNeede
d,&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
// Remplir la table
tableajoute("TABLE_IMP",nomimp)
fin

adr+„

fin

fin
appeldll32("kernel32","GlobalFree",hmem)

// Preselectionner element correspondant à imprimante mémorisée
pour lIndice = 1 a tableoccurrence("TABLE_IMP")
si sansespace(T_IMP[lIndice]) = sansespace(pImprimante) alors
tableselectplus("TABLE_IMP",lIndice)
FIN
FIN