PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Récupérer le nom des bacs d'une imprimante
Récupérer le nom des bacs d'une imprimante
Débuté par info, 14 fév. 2006 21:29 - 7 réponses
Posté le 14 février 2006 - 21:29
Bonjour,

Je souhaite récupérer le nom des bacs et le code correspondant d'une imprimante connectée sur le poste de travail.

Comment y arriver ?


Merci de votre support !
Posté le 15 février 2006 - 06:35
Je crois que l'assistant de la commande iParamètre() te retourne ces noms.
Sous l'éditeur de code tu tappes "iParametre(" puis tu sélectionne
"Assistant".

Philippe
http://www.freedev-web.com



"F10" <info@adsi.ch> a écrit dans le message de news:
43f216ce$1@news.pcsoft.fr...
Bonjour,

Je souhaite récupérer le nom des bacs et le code correspondant d'une
imprimante connectée sur le poste de travail.

Comment y arriver ?


Merci de votre support !
Posté le 15 février 2006 - 06:36
Bonjour,

Après de multiples recherches, j'ai repris mon vieux code VB est l'ai transcrit en WD !

Ce code sous WD permet de connaître le nom et le code des bacs de toute imprimante connectée sur le poste de travail.

Si vous souhaitez plus d'infos... Avec plaisir !


Cordialement.
Posté le 15 février 2006 - 09:22
Ton code m'intéresse
Merci d'avance si tu peux en faire profiter la communauté

cordialement JCP
puccettijc@free.fr



"F10" <info@adsi.ch> a écrit dans le message de news:
43f24b5d$1@news.pcsoft.fr...
Bonjour,

Après de multiples recherches, j'ai repris mon vieux code VB est l'ai
transcrit en WD !

Ce code sous WD permet de connaître le nom et le code des bacs de toute
imprimante connectée sur le poste de travail.

Si vous souhaitez plus d'infos... Avec plaisir !


Cordialement.
Posté le 15 février 2006 - 11:05
Voici donc la procédure complète:

L'écran de paramétrage des impressions (non affiché ici) permet de choisir les imprimantes et bacs corespondant pour les 1ères et copies suivantes. Il est composé de 2 combos et de 2 listes. Les combos affichent les imprimantes présentes sur le poste (voir iListeImprimante()). Les listes affichent les bacs des imprimantes sélectionnées dans les combos grace à la procédure Charge_Bacs(). La variable nCopie m'indique de façon simple (et à améliorer) laquelle des combos est cliquée (1 ou 2) ce qui permet d'effectuer les traitements adéquats (il serait également possible de passer en paramètre le nom de la fenêtre et le nom des objets à traiter...).


PROCEDURE Charge_Bacs(nCopie)

// Déclaration des variables

nbBac est un entier sur 4
sNomImp est une chaîne
sNomPort est une chaîne

nBoucle est un entier
sNomBac est chaîne
nCodeBac est entier
nPositionNull est un entier

tabNumerosBacs est un tableau dynamique de 1 entiers sur 2
sListeBacs est une chaîne

sNomImprimante est une chaîne

SI nCopie = 1 ALORS
sNomImprimante = COMBO_Imprimantes_PremiereCopie..ValeurAffichée
ListeSupprimeTout(LISTE_Bacs_PremiereCopie)
SINON
sNomImprimante = COMBO_Imprimantes_DeuxiemeCopie..ValeurAffichée
ListeSupprimeTout(LISTE_Bacs_DeuxiemeCopie)
FIN


// Constantes A DECLARER dans l'initialisation du projet

//Constante
// API_NUMEROS_BACS = 6
// API_NOMS_BACS = 12
//FIN

// Sélectionner l'imprimante

iConfigure(sNomImprimante,Vrai)
sNomImp = iInfoImprimante(Vrai,iNomImprimante)
sNomPort = iInfoImprimante(Vrai,iNomPort)


// Chercher le nombre de bacs
nbBac = AppelDLL32("winspool.drv","DeviceCapabilitiesA" ,sNomImp,sNomPort,API_NUMEROS_BACS,Null, 0)

SI nbBac ALORS

Dimension(tabNumerosBacs,nbBac)
nbBac = AppelDLL32("winspool.drv","DeviceCapabilitiesA" ,sNomImp,sNomPort,API_NUMEROS_BACS,&tabNumerosBacs, 0)

sListeBacs = Répète(0,24 * nbBac)

nbBac = AppelDLL32("winspool.drv","DeviceCapabilitiesA" ,sNomImp,sNomPort,API_NOMS_BACS,sListeBacs, 0)

POUR nBoucle = 1 TO nbBac
sNomBac = Milieu(sListeBacs, 24 * (nBoucle - 1) + 1, 24)
nPositionNull = Position(sNomBac, Null)
SI nPositionNull ALORS
sNomBac = Gauche(sNomBac,nPositionNull-2)
FIN
nCodeBac = tabNumerosBacs[nBoucle]

SI nCopie = 1 ALORS
ListeAjoute(LISTE_Bacs_PremiereCopie,sNomBac + gLien(NumériqueVersChaîne(nCodeBac)))
SINON
ListeAjoute(LISTE_Bacs_DeuxiemeCopie,sNomBac + gLien(NumériqueVersChaîne(nCodeBac)))
FIN

FIN

FIN

Pour plus d'infos: nospaminfo@adsi.ch
adsi sàrl - CH 1807 Blonay - + 41 21 968 27 40 - www.adsi.ch
Posté le 15 février 2006 - 11:06
Bonjour,

Merci Philippe, je souhaitais aller plus loin, c'est à dire laisser l'utilisateur choisir et changer les configurations quand il le veut. L'assistant est bien pour la programmation en "dur" mais il limite les possibilités. J'espère que le code que j'ai fourni te sera également utile...

Cordialement.
Posté le 15 février 2006 - 11:15
Ok, si tu le permet, je peux récupérer ton exemple de code pour enrichir la
base de données de FreeDev.

Philippe
http://www-freedev-web.com


"F10" <info@adsi.ch> a écrit dans le message de news:
43f2eba3$1@news.pcsoft.fr...

Bonjour,

Merci Philippe, je souhaitais aller plus loin, c'est à dire laisser
l'utilisateur choisir et changer les configurations quand il le veut.
L'assistant est bien pour la programmation en "dur" mais il limite les
possibilités. J'espère que le code que j'ai fourni te sera également
utile...

Cordialement.


Posté le 15 février 2006 - 15:01
Bien sur ! Le code est sur le Forum à disposition de toutes et tous...

Bons devs!