Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
J'exécute une application PB 2017 R3, sous un serveur Windows Server 2016.
Pour une raison que j'ignore, l'imprimante par défaut ne remonte pas.
Alors que lorsque je veux imprimer sous Excel, je vois bien mon imprimante par défaut.
J'essaie donc de trouver un moyen de récupérer cette imprimante, sans utiliser les fonctions PB, mais en utilisant plutôt l'api windows ( getdefaultprinter de winspool.drv)
Je l'ai déclarée comme fonction externe :
Function Boolean GetDefaultPrinter( String pszPrinter, Ref Long pcchBuffer) Library 'winspool.drv' alias for "GetDefaultPrinterA;Ansi"
Et dans mon code :
String ls_imp_defaut Long ui_len ui_len =128 ls_imp_defaut = space(ui_len) IF GetDefaultPrinter( ls_imp_defaut, ui_len) THEN Messagebox('ok', ls_imp_defaut) ELSE Messagebox('','ko') END IF
Je n'ai pas signe d'erreur quand j'exécute, mais pourtant j'ai toujours mon space(128) dans ls_imp_defaut
Quelqu'un aurait une idée ?
Merci beaucoup.
Dernière modification par rapitou (31-01-2019 08:56:58)
Hors ligne
Bonjour,
Oui, tu as simplement oublié un REF dans la déclaration de la fonction externe :
Function Boolean GetDefaultPrinter(REF String pszPrinter, Ref Long pcchBuffer) Library 'winspool.drv' alias for "GetDefaultPrinterA;Ansi"
Pour ma part, j'utilise le projet PowerPrinter (voir le fichier ppdemo.zip pour la mise en oeuvre powerbuilder) :
https://sourceforge.net/projects/powerprinter/
Hors ligne
Salut
Oui c'est ce qu'on pourrait se dire mais non ... quand je mettais la variable en référence ça faisait carrément planter l'application, problème de runtime.
J'appelle déjà des API dans l'appli, et bizarrement la variable de sortie est définie sans ref, et ça fonctionne.
Sauf là et je ne comprends pas
Hors ligne
Bon ça y est j'ai trouvé ..
J'ai redéfini ma fonction en passant ma variable de référence et lors de l'appel je mets cette syntaxe : GetDefaultPrinter( Ref ls_imp_defaut, Ref ui_len)
Et ça marche beaucoup mieux
Merciii
Hors ligne
Bonjour,
J'ai fait le test hier. J'ai simplement rajouté le REF manquant dans la déclaration de la fonction externe pour que cela fonctionne.
Je suis également sous Powerbuilder APPEON 2017 R3.
Hors ligne