Foxpro : Le développement durable
Je ne résiste pas au plaisir d'écrire un petit article technique sans prétention. Foxpro étant un environnement très complet, nous n'utilisons que très peu les API ou autres composants externes. Aussi, je suis assez fier du bout de code suivant.
Nous gérons pas mal de document par automation (essentiellement word et excel), et des pdf. Le problème posé est d'imprimer sans visualiser la fenêtre du document. Voila la solution mise en oeuvre:
M.oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\.rootcimv2")
*-- Collection des imprimantes connectées sur le poste *-- Détermination de l'imprimante par défaut *-- Choix de l'imprimante *-- Fixer l'imprimante à utiliser
M.oPrinters = M.oWMI.ExecQuery("Select * from Win32_Printer")
For Each M.oPrinter In M.oPrinters
If oPrinter.Default
M.oPrinterDefault = M.oPrinter
exit
endif
Next
M.cImpChoix = GETPRINTER()
For Each M.oPrinter in M.oPrinters
if M.oPrinter.name= M.cImpCHoix
M.oPrinter.SetDefaultPrinter()
exit
Endif
Next
*
*-- Le code réalisant l'impression est là
*--
*-- restauration de l'imprimante par default initiale
M.oPrinterDefault.SetDefaultPrinter()
Pour obtenir la liste des imprimantes disponibles il suffit d'utiliser la fonction APRINTERS de VFP.
Pour connaître l'imprimante par défaut de Windows il faut lire la valeur de SET("PRINTER",3).
Enfin pour définir l'imprimante par défaut de Windows, il faut utiliser la fonction de l'API suivante :
DECLARE INTEGER SetDefaultPrinter IN winspool.drv AS SetDefaultPrint STRING pszPrinter .
Cela évite de passer par WMI qui n'est pas toujours installé.
Salut Christophe, et bienvenue ici en tant que 1er commentaire d\\\'un visiteur. Ca s\\\'arrose aux prochaines rencontres AtoutFox.
Pour l\\\'imprimante défaut c\\\'est celle de Windows qu\\\'il me fallait, donc plutôt set(\\\'printer\\\',2).
Sinon, c\\\'est clair que c\\\'est plus simple (d\\\'autant que l\\\'on a pas besoin de la liste des imprimantes, getprinter() le fait ).
Mais je suis en train de regarder WMI, pour faire des utilitaires sur le réseau, du style permettre à un non administrateur de déverouiller un compte bloqué, d\\\'ou son utilisation ici.
sur ton blog.
Ce petit réseau francophone renforcera, j'en suis sur, le regard sur notre outil préféré.
Je te recommande le blog de joêl, http://www.cyberfoxpro.com/joel/ spécialement dédié à VFP et le SQL.
A plus
Bien amicalement,
Richard
Richard