Pas d'inquiétude, avec PBAdonf, c'est dans la poche ! ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 30-01-2019 16:50:09

rapitou  
Membre Power Geek
Date d'inscription: 29-03-2007
Messages: 163
Pépites: 661
Banque: 0

[RESOLU] Imprimante par défaut Windows Server 2016

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 :

Code: pb

Function Boolean GetDefaultPrinter( String pszPrinter, Ref Long pcchBuffer) Library 'winspool.drv' alias for "GetDefaultPrinterA;Ansi"

Et dans mon code :

Code: pb

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

 

#2 31-01-2019 00:14:27

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Imprimante par défaut Windows Server 2016

Bonjour,

Oui, tu as simplement oublié un REF dans la déclaration de la fonction externe :

Code: pb

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

 

#3 31-01-2019 08:51:27

rapitou  
Membre Power Geek
Date d'inscription: 29-03-2007
Messages: 163
Pépites: 661
Banque: 0

Re: [RESOLU] Imprimante par défaut Windows Server 2016

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

 

#4 31-01-2019 08:56:17

rapitou  
Membre Power Geek
Date d'inscription: 29-03-2007
Messages: 163
Pépites: 661
Banque: 0

Re: [RESOLU] Imprimante par défaut Windows Server 2016

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

 

#5 31-01-2019 10:15:43

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Imprimante par défaut Windows Server 2016

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

 

Pied de page des forums

Propulsé par FluxBB 1.2.22