Lorsque j'énumère les imprimantes disponibles, sur certaines stations il
en manque (en général des imprimantes virtuelles ou réseau). J'utilise
une méthode qui est peut-être un peu ancienne :
PRINTER_INFO_5 Info[32];
DWORD Count,Nb;
char asPrinterList[32][100];
EnumPrinters(PRINTER_ENUM_LOCAL,
NULL,
5,
(unsigned char *)Info,
sizeof(Info),
&Count,
&Nb);
for(int i=0;(i<32)&&(i<(int)Nb)&&(Info[i].pPrinterName);i++)
strcpy(asPrinterList[i],Info[i].pPrinterName);
J'ai essayé PRINTER_INFO_2 et PRINTER_INFO_4, mais il m'en manque
encore, d'ailleurs pas toujours les mêmes. Peut-être serait-il plus
judicieux de lister en puisant l'info directement dans la base de
registre, mais je sais pas faire.
Quelqu'un aurait-il une fonction bien rodée qui liste toutes les
imprimantes sans en oublier ? Tout ce dont j'ai besoin, c'est le nom de
l'imprimante pour utiliser ensuite OpenPrinter().
Merci d'avance pour tout tuyau, même crevé, allez.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Christian ASTOR
On 21 déc, 18:35, Bertrand Lenoir-Welter <bertrand-dot-2007-at-galaad- dot-net> wrote:
Lorsque j'énumère les imprimantes disponibles, sur certaines stations il en manque (en général des imprimantes virtuelles ou réseau). J'utili se une méthode qui est peut-être un peu ancienne : PRINTER_INFO_5 Info[32]; DWORD Count,Nb; char asPrinterList[32][100]; EnumPrinters(PRINTER_ENUM_LOCAL,
PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS doit les énumérer toutes (hors PRINTER_ENUM_REMOTE )
On 21 déc, 18:35, Bertrand Lenoir-Welter <bertrand-dot-2007-at-galaad-
dot-net> wrote:
Lorsque j'énumère les imprimantes disponibles, sur certaines stations il
en manque (en général des imprimantes virtuelles ou réseau). J'utili se
une méthode qui est peut-être un peu ancienne :
PRINTER_INFO_5 Info[32];
DWORD Count,Nb;
char asPrinterList[32][100];
EnumPrinters(PRINTER_ENUM_LOCAL,
PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS
doit les énumérer toutes (hors PRINTER_ENUM_REMOTE )
On 21 déc, 18:35, Bertrand Lenoir-Welter <bertrand-dot-2007-at-galaad- dot-net> wrote:
Lorsque j'énumère les imprimantes disponibles, sur certaines stations il en manque (en général des imprimantes virtuelles ou réseau). J'utili se une méthode qui est peut-être un peu ancienne : PRINTER_INFO_5 Info[32]; DWORD Count,Nb; char asPrinterList[32][100]; EnumPrinters(PRINTER_ENUM_LOCAL,
PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS doit les énumérer toutes (hors PRINTER_ENUM_REMOTE )
Bertrand Lenoir-Welter
Bonsoir Christian
Le problème, c'est que ça doit marcher aussi sous Win95/98/ME. Or, l'aide dit que PRINTER_ENUM_CONNECTIONS est "NT only".
Mais bon, je suis en train de jongler avec une double énumération avec PRINTER_INFO_5 suivi, si l'OS est de type NT, de PRINTER_INFO_4 en traquant les redondances de noms. J'espère que la seconde énumération comblera les trous. Le problème est que je ne peux pas tester : chez moi, toutes les imprimantes apparaissent correctement, même les virtuelles.
Merci quand même
Bonsoir Christian
Le problème, c'est que ça doit marcher aussi sous Win95/98/ME. Or,
l'aide dit que PRINTER_ENUM_CONNECTIONS est "NT only".
Mais bon, je suis en train de jongler avec une double énumération avec
PRINTER_INFO_5 suivi, si l'OS est de type NT, de PRINTER_INFO_4 en
traquant les redondances de noms. J'espère que la seconde énumération
comblera les trous. Le problème est que je ne peux pas tester : chez
moi, toutes les imprimantes apparaissent correctement, même les virtuelles.
Le problème, c'est que ça doit marcher aussi sous Win95/98/ME. Or, l'aide dit que PRINTER_ENUM_CONNECTIONS est "NT only".
Mais bon, je suis en train de jongler avec une double énumération avec PRINTER_INFO_5 suivi, si l'OS est de type NT, de PRINTER_INFO_4 en traquant les redondances de noms. J'espère que la seconde énumération comblera les trous. Le problème est que je ne peux pas tester : chez moi, toutes les imprimantes apparaissent correctement, même les virtuelles.
Merci quand même
antedon
Bertrand Lenoir-Welter a écrit :
Bonsoir Christian
Le problème, c'est que ça doit marcher aussi sous Win95/98/ME. Or, l'aide dit que PRINTER_ENUM_CONNECTIONS est "NT only".
Mais bon, je suis en train de jongler avec une double énumération avec PRINTER_INFO_5 suivi, si l'OS est de type NT, de PRINTER_INFO_4 en traquant les redondances de noms. J'espère que la seconde énumération comblera les trous. Le problème est que je ne peux pas tester : chez moi, toutes les imprimantes apparaissent correctement, même les virtuelles.
Merci quand même
Pour être compatible avec 98, je fais 2 énumérations : une avec EnumPrinters(PRINTER_ENUM_LOCAL,.... une avec GetProfileSection("devices", .... qui récupère les imprimantes réseau puisque PRINTER_ENUM_REMOTE et autres ne marchent qu'à partir de NT. puis merge des 2 listes. (Pour mes besoins, je me contente de PRINTER_INFO_2)
Antedon
Bertrand Lenoir-Welter a écrit :
Bonsoir Christian
Le problème, c'est que ça doit marcher aussi sous Win95/98/ME. Or,
l'aide dit que PRINTER_ENUM_CONNECTIONS est "NT only".
Mais bon, je suis en train de jongler avec une double énumération avec
PRINTER_INFO_5 suivi, si l'OS est de type NT, de PRINTER_INFO_4 en
traquant les redondances de noms. J'espère que la seconde énumération
comblera les trous. Le problème est que je ne peux pas tester : chez
moi, toutes les imprimantes apparaissent correctement, même les virtuelles.
Merci quand même
Pour être compatible avec 98, je fais 2 énumérations :
une avec EnumPrinters(PRINTER_ENUM_LOCAL,....
une avec GetProfileSection("devices", .... qui récupère les imprimantes
réseau puisque PRINTER_ENUM_REMOTE et autres ne marchent qu'à partir de NT.
puis merge des 2 listes.
(Pour mes besoins, je me contente de PRINTER_INFO_2)
Le problème, c'est que ça doit marcher aussi sous Win95/98/ME. Or, l'aide dit que PRINTER_ENUM_CONNECTIONS est "NT only".
Mais bon, je suis en train de jongler avec une double énumération avec PRINTER_INFO_5 suivi, si l'OS est de type NT, de PRINTER_INFO_4 en traquant les redondances de noms. J'espère que la seconde énumération comblera les trous. Le problème est que je ne peux pas tester : chez moi, toutes les imprimantes apparaissent correctement, même les virtuelles.
Merci quand même
Pour être compatible avec 98, je fais 2 énumérations : une avec EnumPrinters(PRINTER_ENUM_LOCAL,.... une avec GetProfileSection("devices", .... qui récupère les imprimantes réseau puisque PRINTER_ENUM_REMOTE et autres ne marchent qu'à partir de NT. puis merge des 2 listes. (Pour mes besoins, je me contente de PRINTER_INFO_2)