IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Problème ShellExecute LPR


Sujet :

Delphi

  1. #1
    Invité
    Invité(e)
    Par défaut Problème ShellExecute LPR
    Bonjour à tous !

    Je viens vous embêter aujourd'hui pour un petit souci de LPR.

    J'utilise la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute(0, 'open', 'lpr', PChar('-S '+_Platine+' -P '+ _Port+' '+_fichier), nil,  SW_HIDE);
    ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute(0, 'open', 'lpr', PChar('-S 'XXX+' -P '+pr1 \\XXX\app\carteclient\cartdos), nil, SW_HIDE)
    Cela fonctionne parfaitement bien sous Windows 32bits, mais pas avec Windows 64bits. Est-ce normal ? Ou bien mon environnement a un problème ?
    J'ai fait un peu le tour d'internet mais je n'ai rien trouvé de probant... :-/

    Merci d'avance pour vos lumières !
    Dernière modification par gvasseur58 ; 16/10/2017 à 19h50.

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    J'ai eu le même problème, mais en remplaçant PChar dans ShellExecute(0, 'open', 'lpr', PChar('-S '+_Platine+' -P '+ _Port+' '+_fichier), nil, SW_HIDE);
    par PAnsiChar le problème s'est trouvé résolu chez moi.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  3. #3
    Invité
    Invité(e)
    Par défaut
    Vous avez-eu plus de chance que moi.
    Ça ne fonctionne malheureusement pas... :-(

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Re,

    Essaye ceci qui marche chez moi ShellExecute(0,'OPEN', PAnsiChar('Nom_Complet_Fichier_A_Executer'), Nil, Nil, SW_SHOW);
    en y remplaçant uniquement Nom_Complet_Fichier_A_Executer par un exécutable quelconque (un exécutable dont tu as la certitude qu'il fonctionne) ça permettra de voir s'il y a une autre erreur dans ton code.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    AMHA il faudrait vérifier le résultat de la concaténation '-S '+_Platine+' -P '+ _Port+' '+_fichierpeut être en passant d'abord par une variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Params := Format('-S %s -P %s %s',[_Platine,_Port,_Fichier]);
    // showmessage(Params);
    Mais le problème principal est que la commande LPR n'est pas fournie (par défaut voirle [Edit]) en 64 bits (voir https://www.lifewire.com/command-ava...rosoft-2618081), uniquement en 32 donc il me semble qu'il faut indiquer le chemin complet de la commande LPR.
    NB. je ne trouve pas LPR sur mon poste W10 64bits par exemple, il faudrait donc que je récupère LPR sur une ancienne version et le mette avec ses fichiers associés lpr.exe, lprhelp.dll, et lprmonui.dll certainement dans sysWOW64 pour être tranquille !

    [Edit]
    un peu plus de recherche et il semblerai qu'il faille pour windows 10 ajouter la fonctionnalité à windows (paramètres/activer ou désactiver des fonctionnalités de windows), dans la liste il y a le moyen de rajouter l'utilisation de LPR, en ajoutant cette fonctionnalité il charge les fichiers nécessaires j'en suis là car le chargement semble long !
    une fois cette fonctionnalité installée, LPR et ses fichiers sont copiés dans SYSTEM32 (donc doivent être 64 bits ...)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Pour le débat PChar et PAnsiChar, sur un Delphi récent, normalement ce n'est pas utile
    Par défaut c'est la version PWideChar et ShellExecuteW

    Si PAnsiChar est compatible avec PChar, c'est que vous êtes en Delphi 7 qui utilise ShellExecuteA
    Il y a une directive de compilation mais il me semble qu'elle est conçu pour C++Builder d'utiliser une API Ansi pour faciliter le recodage de .c_str()

    Sinon, la piste de SergioMaster semble bien plus pointue et pertinente qu'il faut creuser !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    ShaiLeTroll : Si PAnsiChar est compatible avec PChar, c'est que vous êtes en Delphi 7
    Effectivement : j'avais oublié de dire que j'utilise Delphi 7 (32 bits) mais après avoir passé à Windows 7 (64 bits) mes ShellExecute ne fonctionnaient plus avec PChar et son remplacement par PAnsiChar a rétabli le bon fonctionnement.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut

    Vu que l'un est un alias de l'autre, c'est typiquement le genre de truc rageant, le pourquoi inexplicable !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  9. #9
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Re,

    ShaiLeTroll : Vu que l'un est un alias de l'autre, c'est typiquement le genre de truc rageant, le pourquoi inexplicable !
    A mon avis l'explication se trouve certainement dans un bug situé dans une sous-couche soit de Delphi, soit de Windows, qui fait que le PAnsiChar n'est pas totalement compatible avec PChar.
    Et honnêtement je n'avais trouvé la solution, pour rétablir le bon fonctionnement, qu'en tâtonnant.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Désolé pour le retard, j'ai été pris par un autre projet.
    Je vais regarder tout ça et je reviens vers vous ;-)

Discussions similaires

  1. problème Cache LPR
    Par Invité dans le forum Langage
    Réponses: 5
    Dernier message: 17/03/2014, 11h48
  2. Réponses: 6
    Dernier message: 08/08/2007, 08h50
  3. Réponses: 8
    Dernier message: 09/05/2007, 00h35
  4. Problème ShellExecute impression
    Par Ju2Pom dans le forum C++Builder
    Réponses: 1
    Dernier message: 02/05/2007, 15h43
  5. Problème avec ShellExecute
    Par SkYsO dans le forum Langage
    Réponses: 7
    Dernier message: 16/11/2005, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo