|
Re: [Wd5.5b] récupérer le nom de l'imprimante par défaut |
Iniciado por Robert.bramoulle, 11,dic. 2003 09:36 - 3 respuestas |
| |
| | | |
|
| |
Publicado el 11,diciembre 2003 - 09:36 |
Pour vous éviter de perdre du temps (si j'ai bien compris votre demande...) Le guide Windev donne l'exemple suivant qui marche très bien sous toutes versions Windos Ch est une chaine Ch=INILit("windows","device") // La chaîne retournée est sous la forme <nom_imp>,<nom_driver>,<port> // par exemple: HP LaserJet 4L,HPPCL5E,LPT1: Info("L'imprimante par défaut est "+... ExtraitChaine(Ch,1,",")+" sur "+ExtraitChaine(Ch,3,",") )
Cordialement Robert
"etienne" <gendron.etienne@wanadoo.fr> wrote:
Bonjour,
Nous avions récupéré le code pour avoir la liste des imprimantes installées, mais la partie permettant de connaître l'imprimante par défaut ne fonctionne pas : si etbinaire(p2.Attributes,4) alors Il ne passe jamais ce test alors qu'une imprimante est bien définie par défaut. Le système d'exploitation utilisée est Windows 2000.
A part la fonctionnalité : extraitchaine(INILit("windows","device"),1,","), vous connaîtriez un moyenne de récupérer l'imprimante par défaut messieurs
?
=================================== p2 est compose de pServerName est un entier long // 1 pPrinterName est un entier long // 2 pShareName est un entier long // 3 pPortName est un entier long // 4 pDriverName est un entier long // 5 pCommen est un entier long // 6 pLocation est un entier long // 7 pDevMode est un entier long // 8 pSepFile est un entier long // 9 pPrintProcessor est un entier long // 10 pDatatype est un entier long // 11 pParameters est un entier long // 12 pSecurityDescriptor est un entier long // 13 Attributes est un entier long // 14 Priority est un entier long // 15 DefaultPriority est un entier long // 16 StartTime est un entier long // 17 UntilTime est un entier long // 18 Stat est un entier long // 19 cJobs est un entier long // 20 AveragePPM est un entier long // 21 fin
ind est un entier NomImp est une chaine asciiz de 128 port est une chaine asciiz de 128 ch est une chaine
ListeSupprimeTout(NomCombo)
// Fonction apparente a EnumPrintersA // ================================== //BOOL EnumPrinters( // DWORD Flags, // printer object types // LPTSTR Name, // name of printer object // DWORD Level, // information level // LPBYTE pPrinterEnum, // printer information buffer // DWORD cbBuf, // size of printer information buffer // LPDWORD pcbNeeded, // bytes received or required // LPDWORD pcReturned // number of printers enumerated //);
appeldll32("winspool.drv","EnumPrintersA",0x6,null,2,null,cbbuf,&pbNeeded,&p cReturned)
si pbNeeded = 0 alors erreur("Erreur au chargement de la liste des imprimantes"+rc+"Proc::ListeImprimantes, Ligne 76(pbNeeded=0) Nombre d'imprimantes trouvée="+pcReturned) renvoyer faux FIN
hmem est un entier long = appeldll32("kernel32","GlobalAlloc",0x40,pbNeeded) cbbuf = pbNeeded si appeldll32("winspool.drv","EnumPrintersA",0x6,null,2,hmem,cbbuf,&pbNeeded,&p cReturned) alors adr est un entier long = hmem si adr = 0 alors erreur("Erreur au chargement de la liste des imprimantes"+rc+"Proc::ListeImprimantes, Ligne 85(adr=0)") renvoyer faux FIN si pcReturned < 1 alors erreur("Erreur au chargement de la liste des imprimantes"+rc+"Proc::ListeImprimantes, Ligne 89(pcReturned<1)") renvoyer faux FIN
pour ind = 1 a pcReturned
// RtlZeroMemory : initialisation à vide // RtlMoveMemory : alimente une variable avec une autre valeur
appeldll32("kernel32","RtlMoveMemory",&p2,adr,84)
si p2 = null alors erreur("Erreur au chargement de la liste des imprimantes"+rc+"Proc::ListeImprimantes, Ligne 101(p2=NULL)") renvoyer faux FIN appeldll32("kernel32","RtlZeroMemory",&NomImp,128) appeldll32("kernel32","RtlMoveMemory",&NomImp,p2.pPrinterName ,128)
si NomImp = "" alors erreur("Erreur au chargement de la liste des imprimantes"+rc+"Proc::ListeImprimantes, Ligne 108(NomImp="")") renvoyer faux FIN
appeldll32("kernel32","RtlZeroMemory",&port,128) appeldll32("kernel32","RtlMoveMemory",&port,p2.pPortName ,128)
si port = "" alors erreur("Erreur au chargement de la liste des imprimantes"+rc+"Proc::ListeImprimantes, Ligne 116(port="")") renvoyer faux FIN si taille(sansespace(NomImp))>0 alors listeAjoute(NomCombo,NomImp) si etbinaire(p2.Attributes,4) alors // ListeSelectPlus(NomCombo,ListeCherche(NomCombo,NomImp)) _nomImp = NomImp ch="Défaut" sinon ch="" fin // listeajoute("Imprimante",port+"\"+nomimp+"\"+ch) fin adr+„ fin fin appeldll32("kernel32","GlobalFree",hmem) Si Tous alors ListeInsere(NomCombo,MessTraduit(5058),1) FIN
// Sélection de l'imprimante par défaut //_indice = ListeCherche(NomCombo,extraitchaine(INILit("windows","device"),1,","),faux) _indice = ListeCherche(NomCombo,_nomImp,faux) si _indice = -1 alors _indice = 1 FIN
ListeSelectPlus(NomCombo,_indice) ===================================
Merci de votre aide.
|
| |
| |
| | | |
|
| | |
| |
Publicado el 11,diciembre 2003 - 10:39 |
Merci de votre réponse, mais j'avais précisé que je voulais éviter cette fonctionnalité car cela fonctionne bien sur une machine en locale mais nous fonctionnons avec des clients légers et cette information là n'est alors plus disponible.
Je me demandais donc si une personne connaissait un autre moyen tel que passer par une API (ce que je n'ai pas encore trouvé).
Passer à WinDev 7 ou plus ? notre projet ne supporte pas le changement et cela prendrait trop de temps pour le réactualiser. Nous devons donc continuer à développer ce produit sous WinDev 5.5.
Merci d'avance de votre aide.
"Robert" <Robert.bramoulle@wanadoo.fr> a écrit dans le message de news:3fd828bc@news....
Pour vous éviter de perdre du temps (si j'ai bien compris votre
demande...)
Le guide Windev donne l'exemple suivant qui marche très bien sous toutes versions Windos Ch est une chaine Ch=INILit("windows","device") // La chaîne retournée est sous la forme <nom_imp>,<nom_driver>,<port> // par exemple: HP LaserJet 4L,HPPCL5E,LPT1: Info("L'imprimante par défaut est "+... ExtraitChaine(Ch,1,",")+" sur "+ExtraitChaine(Ch,3,",") ) Cordialement Robert "etienne" <gendron.etienne@wanadoo.fr> wrote: Bonjour,
Nous avions récupéré le code pour avoir la liste des imprimantes
installées, > >mais la partie permettant de connaître l'imprimante par défaut ne fonctionne
pas : si etbinaire(p2.Attributes,4) alors Il ne passe jamais ce test alors qu'une imprimante est bien définie par défaut. Le système d'exploitation utilisée est Windows 2000.
A part la fonctionnalité : extraitchaine(INILit("windows","device"),1,","), > >vous connaîtriez un moyenne de récupérer l'imprimante par défaut messieurs
? =================================== p2 est compose de pServerName est un entier long // 1 pPrinterName est un entier long // 2 pShareName est un entier long // 3 pPortName est un entier long // 4 pDriverName est un entier long // 5 pCommen est un entier long // 6 pLocation est un entier long // 7 pDevMode est un entier long // 8 pSepFile est un entier long // 9 pPrintProcessor est un entier long // 10 pDatatype est un entier long // 11 pParameters est un entier long // 12 pSecurityDescriptor est un entier long // 13 Attributes est un entier long // 14 Priority est un entier long // 15 DefaultPriority est un entier long // 16 StartTime est un entier long // 17 UntilTime est un entier long // 18 Stat est un entier long // 19 cJobs est un entier long // 20 AveragePPM est un entier long // 21 fin
ind est un entier NomImp est une chaine asciiz de 128 port est une chaine asciiz de 128 ch est une chaine
ListeSupprimeTout(NomCombo)
// Fonction apparente a EnumPrintersA // ================================== //BOOL EnumPrinters( // DWORD Flags, // printer object types // LPTSTR Name, // name of printer object // DWORD Level, // information level // LPBYTE pPrinterEnum, // printer information buffer // DWORD cbBuf, // size of printer information buffer // LPDWORD pcbNeeded, // bytes received or required // LPDWORD pcReturned // number of printers enumerated //);
appeldll32("winspool.drv","EnumPrintersA",0x6,null,2,null,cbbuf,&pbNeeded,& p
cReturned)
si pbNeeded = 0 alors erreur("Erreur au chargement de la liste des imprimantes"+rc+"Proc::ListeImprimantes, Ligne 76(pbNeeded=0) Nombre d'imprimantes trouvée="+pcReturned) renvoyer faux FIN
hmem est un entier long = appeldll32("kernel32","GlobalAlloc",0x40,pbNeeded)
cbbuf = pbNeeded si
appeldll32("winspool.drv","EnumPrintersA",0x6,null,2,hmem,cbbuf,&pbNeeded,& p
cReturned) alors adr est un entier long = hmem si adr = 0 alors erreur("Erreur au chargement de la liste des imprimantes"+rc+"Proc::ListeImprimantes, Ligne 85(adr=0)") renvoyer faux FIN si pcReturned < 1 alors erreur("Erreur au chargement de la liste des imprimantes"+rc+"Proc::ListeImprimantes, Ligne 89(pcReturned<1)") renvoyer faux FIN
pour ind = 1 a pcReturned
// RtlZeroMemory : initialisation à vide // RtlMoveMemory : alimente une variable avec une autre valeur
appeldll32("kernel32","RtlMoveMemory",&p2,adr,84)
si p2 = null alors erreur("Erreur au chargement de la liste des imprimantes"+rc+"Proc::ListeImprimantes, Ligne 101(p2=NULL)") renvoyer faux FIN appeldll32("kernel32","RtlZeroMemory",&NomImp,128) appeldll32("kernel32","RtlMoveMemory",&NomImp,p2.pPrinterName ,128)
si NomImp = "" alors erreur("Erreur au chargement de la liste des imprimantes"+rc+"Proc::ListeImprimantes, Ligne 108(NomImp="")") renvoyer faux FIN
appeldll32("kernel32","RtlZeroMemory",&port,128) appeldll32("kernel32","RtlMoveMemory",&port,p2.pPortName ,128)
si port = "" alors erreur("Erreur au chargement de la liste des imprimantes"+rc+"Proc::ListeImprimantes, Ligne 116(port="")") renvoyer faux FIN si taille(sansespace(NomImp))>0 alors listeAjoute(NomCombo,NomImp) si etbinaire(p2.Attributes,4) alors // ListeSelectPlus(NomCombo,ListeCherche(NomCombo,NomImp)) _nomImp = NomImp ch="Défaut" sinon ch="" fin // listeajoute("Imprimante",port+"\"+nomimp+"\"+ch) fin adr+„ fin fin appeldll32("kernel32","GlobalFree",hmem) Si Tous alors ListeInsere(NomCombo,MessTraduit(5058),1) FIN
// Sélection de l'imprimante par défaut //_indice =
ListeCherche(NomCombo,extraitchaine(INILit("windows","device"),1,","),faux) _indice = ListeCherche(NomCombo,_nomImp,faux) si _indice = -1 alors _indice = 1 FIN
ListeSelectPlus(NomCombo,_indice) ===================================
Merci de votre aide.
|
| |
| |
| | | |
|
| | |
| |
Publicado el 17,diciembre 2003 - 11:47 |
lpBuffer est une chaine asciiz sur 400 cDefaultPrinter est une chaine AppelDLL32("kernel32","GetProfileStringA","windows","device", "", &lpBuffer, 300) // La chaîne retournée est sous la forme <nom_imp>,<nom_driver>,<port> // par exemple: HP LaserJet 4L,HPPCL5E,LPT1:
cDefaultPrinter=ExtraitChaine(lpBuffer,1,",")+" sur "+ExtraitChaine(lpBuffer,3,",")
"etienne" <gendron.etienne@wanadoo.fr> a écrit dans le message de news:3fd8376c@news.... > > Merci de votre réponse, mais j'avais précisé que je voulais éviter cette > fonctionnalité car cela fonctionne bien sur une machine en locale mais nous > fonctionnons avec des clients légers et cette information là n'est alors > plus disponible. > > Je me demandais donc si une personne connaissait un autre moyen tel que > passer par une API (ce que je n'ai pas encore trouvé). > > Passer à WinDev 7 ou plus ? notre projet ne supporte pas le changement et > cela prendrait trop de temps pour le réactualiser. Nous devons donc > continuer à développer ce produit sous WinDev 5.5. > > Merci d'avance de votre aide. > > "Robert" <Robert.bramoulle@wanadoo.fr> a écrit dans le message de > news:3fd828bc@news.... > > > > > > Pour vous éviter de perdre du temps (si j'ai bien compris votre > demande...) > > Le guide Windev donne l'exemple suivant qui marche très bien sous toutes > > versions Windos > > Ch est une chaine > > Ch=INILit("windows","device") > > // La chaîne retournée est sous la forme <nom_imp>,<nom_driver>,<port> > > // par exemple: HP LaserJet 4L,HPPCL5E,LPT1: > > Info("L'imprimante par défaut est "+... > > ExtraitChaine(Ch,1,",")+" sur "+ExtraitChaine(Ch,3,",") ) > > > > Cordialement > > Robert > > > > "etienne" <gendron.etienne@wanadoo.fr> wrote: > > > > > >Bonjour, > > > > > >Nous avions récupéré le code pour avoir la liste des imprimantes > installées, > > >mais la partie permettant de connaître l'imprimante par défaut ne > fonctionne > > >pas : > > > si etbinaire(p2.Attributes,4) alors > > >Il ne passe jamais ce test alors qu'une imprimante est bien définie par > > >défaut. Le système d'exploitation utilisée est Windows 2000. > > > > > >A part la fonctionnalité : > extraitchaine(INILit("windows","device"),1,","), > > >vous connaîtriez un moyenne de récupérer l'imprimante par défaut > messieurs > > ? > > > > > >=================================== > > >p2 est compose de > > > pServerName est un entier long // 1 > > > pPrinterName est un entier long // 2 > > > pShareName est un entier long // 3 > > > pPortName est un entier long // 4 > > > pDriverName est un entier long // 5 > > > pCommen est un entier long // 6 > > > pLocation est un entier long // 7 > > > pDevMode est un entier long // 8 > > > pSepFile est un entier long // 9 > > > pPrintProcessor est un entier long // 10 > > > pDatatype est un entier long // 11 > > > pParameters est un entier long // 12 > > > pSecurityDescriptor est un entier long // 13 > > > Attributes est un entier long // 14 > > > Priority est un entier long // 15 > > > DefaultPriority est un entier long // 16 > > > StartTime est un entier long // 17 > > > UntilTime est un entier long // 18 > > > Stat est un entier long // 19 > > > cJobs est un entier long // 20 > > > AveragePPM est un entier long // 21 > > >fin > > > > > >ind est un entier > > >NomImp est une chaine asciiz de 128 > > >port est une chaine asciiz de 128 > > >ch est une chaine > > > > > >ListeSupprimeTout(NomCombo) > > > > > >// Fonction apparente a EnumPrintersA > > >// ================================== > > >//BOOL EnumPrinters( > > >// DWORD Flags, // printer object types > > >// LPTSTR Name, // name of printer object > > >// DWORD Level, // information level > > >// LPBYTE pPrinterEnum, // printer information buffer > > >// DWORD cbBuf, // size of printer information buffer > > >// LPDWORD pcbNeeded, // bytes received or required > > >// LPDWORD pcReturned // number of printers enumerated > > >//); > > > > > > >appeldll32("winspool.drv","EnumPrintersA",0x6,null,2,null,cbbuf,&pbNeeded,& > p > > >cReturned) > > > > > >si pbNeeded = 0 alors > > > erreur("Erreur au chargement de la liste des > > >imprimantes"+rc+"Proc::ListeImprimantes, Ligne 76(pbNeeded=0) Nombre > > >d'imprimantes trouvée="+pcReturned) > > > renvoyer faux > > >FIN > > > > > >hmem est un entier long = > appeldll32("kernel32","GlobalAlloc",0x40,pbNeeded) > > >cbbuf = pbNeeded > > >si > > >
appeldll32("winspool.drv","EnumPrintersA",0x6,null,2,hmem,cbbuf,&pbNeeded,& > p > > >cReturned) alors > > > adr est un entier long = hmem > > > si adr = 0 alors > > > erreur("Erreur au chargement de la liste des > > >imprimantes"+rc+"Proc::ListeImprimantes, Ligne 85(adr=0)") > > > renvoyer faux > > > FIN > > > si pcReturned < 1 alors > > > erreur("Erreur au chargement de la liste des > > >imprimantes"+rc+"Proc::ListeImprimantes, Ligne 89(pcReturned<1)") > > > renvoyer faux > > > FIN > > > > > > pour ind = 1 a pcReturned > > > > > >// RtlZeroMemory : initialisation à vide > > >// RtlMoveMemory : alimente une variable avec une autre valeur > > > > > > appeldll32("kernel32","RtlMoveMemory",&p2,adr,84) > > > > > > si p2 = null alors > > > erreur("Erreur au chargement de la liste des > > >imprimantes"+rc+"Proc::ListeImprimantes, Ligne 101(p2=NULL)") > > > renvoyer faux > > > FIN > > > appeldll32("kernel32","RtlZeroMemory",&NomImp,128) > > > appeldll32("kernel32","RtlMoveMemory",&NomImp,p2.pPrinterName ,128) > > > > > > si NomImp = "" alors > > > erreur("Erreur au chargement de la liste des > > >imprimantes"+rc+"Proc::ListeImprimantes, Ligne 108(NomImp="")") > > > renvoyer faux > > > FIN > > > > > > appeldll32("kernel32","RtlZeroMemory",&port,128) > > > appeldll32("kernel32","RtlMoveMemory",&port,p2.pPortName ,128) > > > > > > si port = "" alors > > > erreur("Erreur au chargement de la liste des > > >imprimantes"+rc+"Proc::ListeImprimantes, Ligne 116(port="")") > > > renvoyer faux > > > FIN > > > si taille(sansespace(NomImp))>0 alors > > > listeAjoute(NomCombo,NomImp) > > > si etbinaire(p2.Attributes,4) alors > > >// ListeSelectPlus(NomCombo,ListeCherche(NomCombo,NomImp)) > > > _nomImp = NomImp > > > ch="Défaut" > > > sinon > > > ch="" > > > fin > > >// listeajoute("Imprimante",port+"\"+nomimp+"\"+ch) > > > fin > > > adr+„ > > > fin > > >fin > > >appeldll32("kernel32","GlobalFree",hmem) > > >Si Tous alors > > > ListeInsere(NomCombo,MessTraduit(5058),1) > > >FIN > > > > > >// Sélection de l'imprimante par défaut > > >//_indice = > > > >ListeCherche(NomCombo,extraitchaine(INILit("windows","device"),1,","),faux) > > >_indice = ListeCherche(NomCombo,_nomImp,faux) > > >si _indice = -1 alors > > > _indice = 1 > > >FIN > > > > > >ListeSelectPlus(NomCombo,_indice) > > >=================================== > > > > > >Merci de votre aide. > > > > > > > > > > |
| |
| |
| | | |
|
| | |
| |
Publicado el 18,diciembre 2003 - 13:22 |
Parfait ! merci bcp, cela marche bien
"ehf" <ehfrikach@orpea.net> a écrit dans le message de news:3fe02446@news....
lpBuffer est une chaine asciiz sur 400 cDefaultPrinter est une chaine AppelDLL32("kernel32","GetProfileStringA","windows","device", "", &lpBuffer, 300) // La chaîne retournée est sous la forme <nom_imp>,<nom_driver>,<port> // par exemple: HP LaserJet 4L,HPPCL5E,LPT1:
cDefaultPrinter=ExtraitChaine(lpBuffer,1,",")+" sur "+ExtraitChaine(lpBuffer,3,",")
"etienne" <gendron.etienne@wanadoo.fr> a écrit dans le message de news:3fd8376c@news.... > > Merci de votre réponse, mais j'avais précisé que je voulais éviter
cette
> fonctionnalité car cela fonctionne bien sur une machine en locale mais nous > fonctionnons avec des clients légers et cette information là n'est alors
> plus disponible. > > Je me demandais donc si une personne connaissait un autre moyen tel que
> passer par une API (ce que je n'ai pas encore trouvé). > > Passer à WinDev 7 ou plus ? notre projet ne supporte pas le changement et > cela prendrait trop de temps pour le réactualiser. Nous devons donc > continuer à développer ce produit sous WinDev 5.5. > > Merci d'avance de votre aide. > > "Robert" <Robert.bramoulle@wanadoo.fr> a écrit dans le message de > news:3fd828bc@news.... > > > > > > Pour vous éviter de perdre du temps (si j'ai bien compris votre > demande...) > > Le guide Windev donne l'exemple suivant qui marche très bien sous toutes > > versions Windos > > Ch est une chaine > > Ch=INILit("windows","device") > > // La chaîne retournée est sous la forme <nom_imp>,<nom_driver>,<port>
> > // par exemple: HP LaserJet 4L,HPPCL5E,LPT1: > > Info("L'imprimante par défaut est "+... > > ExtraitChaine(Ch,1,",")+" sur "+ExtraitChaine(Ch,3,",") ) > > > > Cordialement > > Robert > > > > "etienne" <gendron.etienne@wanadoo.fr> wrote: > > > > > >Bonjour, > > > > > >Nous avions récupéré le code pour avoir la liste des imprimantes > installées, > > >mais la partie permettant de connaître l'imprimante par défaut ne > fonctionne > > >pas : > > > si etbinaire(p2.Attributes,4) alors > > >Il ne passe jamais ce test alors qu'une imprimante est bien définie par > > >défaut. Le système d'exploitation utilisée est Windows 2000. > > > > > >A part la fonctionnalité : > extraitchaine(INILit("windows","device"),1,","), > > >vous connaîtriez un moyenne de récupérer l'imprimante par défaut > messieurs > > ? > > > > > >=================================== > > >p2 est compose de > > > pServerName est un entier long // 1 > > > pPrinterName est un entier long // 2 > > > pShareName est un entier long // 3 > > > pPortName est un entier long // 4 > > > pDriverName est un entier long // 5 > > > pCommen est un entier long // 6 > > > pLocation est un entier long // 7 > > > pDevMode est un entier long // 8 > > > pSepFile est un entier long // 9 > > > pPrintProcessor est un entier long // 10 > > > pDatatype est un entier long // 11 > > > pParameters est un entier long // 12 > > > pSecurityDescriptor est un entier long // 13 > > > Attributes est un entier long // 14 > > > Priority est un entier long // 15 > > > DefaultPriority est un entier long // 16 > > > StartTime est un entier long // 17 > > > UntilTime est un entier long // 18 > > > Stat est un entier long // 19 > > > cJobs est un entier long // 20 > > > AveragePPM est un entier long // 21 > > >fin > > > > > >ind est un entier > > >NomImp est une chaine asciiz de 128 > > >port est une chaine asciiz de 128 > > >ch est une chaine > > > > > >ListeSupprimeTout(NomCombo) > > > > > >// Fonction apparente a EnumPrintersA > > >// ================================== > > >//BOOL EnumPrinters( > > >// DWORD Flags, // printer object types > > >// LPTSTR Name, // name of printer object > > >// DWORD Level, // information level > > >// LPBYTE pPrinterEnum, // printer information buffer > > >// DWORD cbBuf, // size of printer information buffer > > >// LPDWORD pcbNeeded, // bytes received or required > > >// LPDWORD pcReturned // number of printers enumerated > > >//); > > > > > >
appeldll32("winspool.drv","EnumPrintersA",0x6,null,2,null,cbbuf,&pbNeeded,& > p > > >cReturned) > > > > > >si pbNeeded = 0 alors > > > erreur("Erreur au chargement de la liste des > > >imprimantes"+rc+"Proc::ListeImprimantes, Ligne 76(pbNeeded=0) Nombre
> > >d'imprimantes trouvée="+pcReturned) > > > renvoyer faux > > >FIN > > > > > >hmem est un entier long = > appeldll32("kernel32","GlobalAlloc",0x40,pbNeeded) > > >cbbuf = pbNeeded > > >si > > >
appeldll32("winspool.drv","EnumPrintersA",0x6,null,2,hmem,cbbuf,&pbNeeded,& > p > > >cReturned) alors > > > adr est un entier long = hmem > > > si adr = 0 alors > > > erreur("Erreur au chargement de la liste des > > >imprimantes"+rc+"Proc::ListeImprimantes, Ligne 85(adr=0)") > > > renvoyer faux > > > FIN > > > si pcReturned < 1 alors > > > erreur("Erreur au chargement de la liste des > > >imprimantes"+rc+"Proc::ListeImprimantes, Ligne 89(pcReturned<1)") > > > renvoyer faux > > > FIN > > > > > > pour ind = 1 a pcReturned > > > > > >// RtlZeroMemory : initialisation à vide > > >// RtlMoveMemory : alimente une variable avec une autre valeur > > > > > > appeldll32("kernel32","RtlMoveMemory",&p2,adr,84) > > > > > > si p2 = null alors > > > erreur("Erreur au chargement de la liste des > > >imprimantes"+rc+"Proc::ListeImprimantes, Ligne 101(p2=NULL)") > > > renvoyer faux > > > FIN > > > appeldll32("kernel32","RtlZeroMemory",&NomImp,128) > > > appeldll32("kernel32","RtlMoveMemory",&NomImp,p2.pPrinterName ,128)
> > > > > > si NomImp = "" alors > > > erreur("Erreur au chargement de la liste des > > >imprimantes"+rc+"Proc::ListeImprimantes, Ligne 108(NomImp="")") > > > renvoyer faux > > > FIN > > > > > > appeldll32("kernel32","RtlZeroMemory",&port,128) > > > appeldll32("kernel32","RtlMoveMemory",&port,p2.pPortName ,128) > > > > > > si port = "" alors > > > erreur("Erreur au chargement de la liste des > > >imprimantes"+rc+"Proc::ListeImprimantes, Ligne 116(port="")") > > > renvoyer faux > > > FIN > > > si taille(sansespace(NomImp))>0 alors > > > listeAjoute(NomCombo,NomImp) > > > si etbinaire(p2.Attributes,4) alors > > >// ListeSelectPlus(NomCombo,ListeCherche(NomCombo,NomImp)) > > > _nomImp = NomImp > > > ch="Défaut" > > > sinon > > > ch="" > > > fin > > >// listeajoute("Imprimante",port+"\"+nomimp+"\"+ch) > > > fin > > > adr+„ > > > fin > > >fin > > >appeldll32("kernel32","GlobalFree",hmem) > > >Si Tous alors > > > ListeInsere(NomCombo,MessTraduit(5058),1) > > >FIN > > > > > >// Sélection de l'imprimante par défaut > > >//_indice = > > >
ListeCherche(NomCombo,extraitchaine(INILit("windows","device"),1,","),faux) > > >_indice = ListeCherche(NomCombo,_nomImp,faux) > > >si _indice = -1 alors > > > _indice = 1 > > >FIN > > > > > >ListeSelectPlus(NomCombo,_indice) > > >=================================== > > > > > >Merci de votre aide. > > > > > > > > > >
|
| |
| |
| | | |
|
| | | | |
| | |
|