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

API, COM et SDKs Delphi Discussion :

Utiliser l'Assistant d'impression Windows [FAQ]


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut Utiliser l'Assistant d'impression Windows
    Bonjour,

    Dans le cadre d'un projet, je cherche à imprimer des images jpg. Cependant, je souhaite utiliser l'Assistant d'impression de Windows car il correspond à mon besoin, notamment pour le regroupement de plusieurs images sur une seule page.

    J'ai lu qu'il était possible d'utiliser la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rundll32.exe C:\WINDOWS\system32\shimgvw.dll,ImageView_PrintTo /pt "%1" "%2" "%3" "%4"
    Cette commande, si je ne me trompe pas, est utiliser lorsque l'on fait Fichier ->Imprimer via l'explorateur de fichier. En faisant celà, je tombe bien sur ma fenêtre d'impression ... mais voilà, je ne parviens pas à le faire dans un ShellExecute.
    Toujours pareil, et sauf erreur de ma part, %1 correspond aux images voulant être imprimées et %2 à l'imprimante...

    Un petit coup de pouce serait super
    Merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    668
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 668
    Par défaut
    salut,
    je pense que tu cherches ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute(0,'open','rundll32.exe','C:\WINDOWS\System32\shimgvw.dll,ImageView_Fullscreen D:\image 3.jpg',NIL,SW_normal);
    ou:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute(0,'open','rundll32.exe','C:\WINDOWS\System32\shimgvw.dll,ImageView_PrintTo /pt "%1" "%2" "%3" "%4"',NIL,SW_show);
    oui ero le 1% représente le nom du fichier et 2% le nom de l'imprimante.Les 3% et 4% représentent le nom du pilote et le nom du port sur les systèmes Windows.

    j'espère que ça t'aideras.

    a+

    NABIL74

  3. #3
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Merci NABIL74 pour ta réponse .

    En effet, ta première proposition fonctionne, et ça, j'ai déjà réussi à le faire, par contre, pour le second, impossible de le faire fonctionner

    Voici ma ligne de commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    begin
    ShellExecute(0,'open','rundll32.exe','C:\WINDOWS\System32\shimgvw.dll,ImageView_PrintTo /pt "C:\Test\mon test.png" "%2" "%3" "%4"',NIL,SW_show);
    Rien ne se passe Je désespère

  4. #4
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    668
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 668
    Par défaut
    Citation Envoyé par ero-sennin Voir le message
    Merci NABIL74 pour ta réponse .

    En effet, ta première proposition fonctionne, et ça, j'ai déjà réussi à le faire, par contre, pour le second, impossible de le faire fonctionner

    Voici ma ligne de commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    begin
    ShellExecute(0,'open','rundll32.exe','C:\WINDOWS\System32\shimgvw.dll,ImageView_PrintTo /pt "C:\Test\mon test.png" "%2" "%3" "%4"',NIL,SW_show);
    Rien ne se passe Je désespère
    il ne se passe rien par ceque tu n'as pas indiqué à delphi les paramètres de "2%"
    ero,comme je te l'ai dis:
    1% représente le nom du fichier.
    2% le nom de l'imprimante.
    donc le code serai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute(0,'open','rundll32.exe','C:\WINDOWS\System32\shimgvw.dll,ImageView_PrintTo /pt "D:\image 3.jpg" "hp deskjet 960c series" "%3" "%4"',NIL,SW_normal);
    bonne chance.

    a+

    NABIL74

  5. #5
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Oui, merci pour ces précisions! Malheureusement, rien n'y fait
    Pour bien cerner ce que je veux, tu prends un fichier .*jpg et tu fais clic droit imprimer. Tu as le logiciel d'assistant d'impression de Windows qui s'affiche, et c'est là que j'aimerai atterrir. On même directement sur la fenêtre de sélection d'images pourquoi pas.
    Dans mon cas, je fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute(0,'open','rundll32.exe','C:\WINDOWS\System32\shimgvw.dll,ImageView_PrintTo /pt "C:\Test\test.jpg" "\\HP PSC 1400 series" "%3" "%4"',NIL,SW_normal);
    (l'imprimante est en réseau).

    Sinon pour tester en local, j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute(0,'open','rundll32.exe','C:\WINDOWS\System32\shimgvw.dll,ImageView_PrintTo /pt "C:\Test\test.jpg" "PDFCreator" "%3" "%4"',NIL,SW_normal);
    Là, j'ai directement la fenêtre de PDFCreator qui se lance ... Or, j'aimerai d'abord configurer mon impression...

    Merci de te pencher sur mon cas

    EDIT :
    J'ai trouvé un lien intéressant, mais alors là, faut que je comprenne comment m'y prendre car j'ai pas tout compris... Je vais aller me coucher, je verrai ça demain

  6. #6
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    668
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 668
    Par défaut
    salut,
    enfin j'ai réussi à trouver la solution:
    d'abord,il faut télécharger :"WIAAutSDK" de microsoft.voici le lien:http://www.microsoft.com/downloads/d...DisplayLang=en
    puis,il faut:
    1-copier "wiaaut.dll" dans le répertoire "System32".
    2-Depuis une invite de commandes dans le répertoire System32, exécutez la commande suivante:
    RegSvr32 WIAAut.dll
    3-tu auras un message qui te dira que la dll est enregistrée.
    4-pour lancer assistant d'impression de Windows,il te faut une procédure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    uses ActiveX, ComObj, StdCtrls;
     
    procedure ShowPhotoPrintWizard(Files: TStringList);
    var
      I: Integer;
      CommonDialog: OleVariant;
      Vector: OleVariant;
    begin
      if not Assigned(Files) then
        Exit;
      CommonDialog := CreateOleObject('WIA.CommonDialog');
      Vector := CreateOleObject('WIA.Vector');
      for I := 0 to Files.Count - 1 do
        Vector.Add(Files[I]);
      CommonDialog.ShowPhotoPrintingWizard(Vector);
      Vector := Unassigned;
      CommonDialog := Unassigned;
    end;
    pour l'appeler,tu fais ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure TForm1.Button2Click(Sender: TObject);
    var
       List: TStringList;
    begin
       List := TStringList.Create;
       with List do
       try
         Append('D:\image 3.jpg');//la 1ère photo
         Append('D:\4.jpg');//la 2ème photo
         ShowPhotoPrintWizard(List);
       finally
         Free;
       end;
    end;
    je l'ai testé et ça marche!!

    régale-toi ero

    a+

    NABIL74

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment lancer l'assistant d'impression de Windows ?
    Par Bernard B dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 06/11/2007, 19h05
  2. Utilisation des primitives d'impression de Windows
    Par ledawa dans le forum Windows
    Réponses: 0
    Dernier message: 05/10/2007, 19h55
  3. Réponses: 16
    Dernier message: 17/03/2005, 13h54
  4. Problème d'utilisation select () avant recv sous windows
    Par init dans le forum Développement
    Réponses: 3
    Dernier message: 16/03/2005, 19h36
  5. Utilisation de Pointeurs dans API windows
    Par Drooxy dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 13/03/2003, 22h39

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