S'identifier

API
Documentation
Ressources
Trucs & astuces
Libre
Gabarits
Services

Membres
Participer
Visiter

Contact

Meilleure résolution
mode 800 x 600

Optimisé pour
IE v.5
Netscape v.6
mais surtout pour
Mozilla v.1
minimum

 


Membre de Click-FR®, Réseau francophone Paie-Par-Click

EnumPrinters

Date de parution : 05/04/2002 - Cette fiche API a été lue 7268 fois

Description

EnumPrinters trouve et retourne l'information sur une ou plusieurs imprimantes auxquelles l'ordinateur a accès. Elle inclut les imprimantes local (physiquement connecté à la machine) et réseau. Cette information est placée dans le tableau passé par pPrinterEnum, laquelle peut être copiée. La fonction retourne Vrai en cas de succès ou Faux.

Syntaxe

AppelDLL32("winspool.drv", "EnumPrintersA", flags, &lpname, Level, &pPrinterEnum, cdBuf, &pcbNeeded, &pcReturned)

flags
Un ou plusieurs des sémaphores suivants :
PRINTER_ENUM_CONNECTIONS = 0x4
Win NT seulement : obtenir l'information sur les imprimantes réseau auxquelles l'ordinateur est connecté.
PRINTER_ENUM_DEFAULT = 0x1
Win 95/98 seulement : obtenir l'information sur l'imprimante par défaut de l'ordinateur.
PRINTER_ENUM_LOCAL = 0x2
Obtient l'information sur les imprimantes en local. Win 95/98 pour plusieurs raisons les imprimantes réseau sont aussi considérées comme local.
PRINTER_ENUM_NAME = 0x8
Obtient l'information sur toutes les imprimantes dans le domaine précisé par name.
PRINTER_ENUM_NETWORK = 0x40
Win NT seulement : obtient l'information sur toutes les imprimantes du domaine réseau de l'ordinateur. Fonctionne seulement avec la structure PRINTER_INFO_1.
PRINTER_ENUM_REMOTE = 0x10
Win NT seulement : idem à PRINTER_ENUM_NETWORK.
PRINTER_ENUM_SHARED = 0x20
Obtient l'information sur toutes les imprimantes avec l'attribut de partage.
 
name
Le nom du domaine réseau à regarder. Si non utilisé, laisser ce paramètre en une ligne vide.
Level
Specifie quelle structure PRINTER_INFO_* est à utilisée. Pour Win 95/98, ce peut être 1, 2, ou 5. Pour Win NT, ce peut être 1, 2, ou 4.
pPrinterEnum
Un tableau qui reçoit les informations de la structure PRINTER_INFO_*.
cdBuf
Taille en octets du tableau passé pPrinterEnum.
pcbNeeded
En cas de succès, récupère le nombre d'octets d'informations que la fonction a trouvé. Sinon, récupère le nombre d'octets que pPrinterEnum doit avoir pour avoir toutes les informations dans l'ordre.
pcReturned
Récupère le nombre d'imprimantes trouvé par la fonction.

 

Compatibilité

  • Windows 95 : supporté.
  • Windows 98 : supporté.
  • Windows NT : demande Windows NT 3.1 ou plus.
  • Windows 2000 : supporté
  • Windows CE : non supporté.

Remarque

Aucune

Exemple 1

// Récupérer la liste des imprimantes connectées
// à mon ordinateur localement
pi est un PRINTER_INFO_2
cdBuf est un entier long
hMem est un entier long
pbNeeded est un entier long
pcReturned est un entier long
i est un entier
imp est une chaîne asciiz de 128
port est une chaîne asciiz de 128
ch est une chaîne

AppelDLL32("winspool.drv", "EnumPrintersA", 0x2, Null, 2, Null,...
cdBuf, &pbNeeded, &pcReturned)
// Ce code vous est offert par Beaussier en ligne...

hMem = AppelDLL32("kernel32", "GlobalAlloc", 0x40, pbNeeded)

cdBuf = pbNeeded

Si AppelDLL32("winspool.drv", "EnumPrintersA", 0x2, Null,2, hMem,...
cdBuf, &pbNeeded, &pcReturned) Alors

Pour i = 1 à pcReturned

// transfert vers la structure pi
AppelDLL32("kernel32", "RtlMoveMemory", &pi, hMem, 84)

AppelDLL32("kernel32", "RtlMoveMemory", &imp, 128)
AppelDLL32("kernel32", "RtlMoveMemory", &imp, pi:pPrinterName, 128)

AppelDLL32("kernel32", "RtlMoveMemory", &port, 128)
AppelDLL32("kernel32", "RtlMoveMemory", &port, pi:pPortName, 128)

Si Taille(SansEspace(imp)) > 0 Alors

Si EtBinaire(pi:Attributes, 4) Alors ch = " par défaut" Sinon ch = " " Fin

Trace(imp + " sur " + port + ch)

Fin

hMem += 84 // imprimante suivante

Fin

Fin

AppelDLL32("kernel32", "GlobalFree", hMem)


Nombre de commentaire sur EnumPrinters : 1

Rappel : Le code fourni est compatible Windev v.4 et 5. Pour les versions supérieures, vous devez modifier le type des variables numériques. Par exemple : entier long devient entier.
Bien sûr, les marques citées sont déposées par leurs sociétés respectives. Ces pages sont à la disposition de tous, le code fourni est libre mais toute responsabilité est déclinée en cas de mauvais usage ou de dysfonctionnement.
© 2000-2005 Beaussier & Le Centre W..D..