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

Langage Delphi Discussion :

Créer une imprimante


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Par défaut Créer une imprimante
    Bonjour tous le monde.

    Je cherche des exemples me permettant de créer une imprimante qui n'en est pas une ... je m'explique.

    Je voudrais :
    - ajouter une imprimante dans windows (drivers ?)
    - lors de son utilisation (fichier/imprimer depuis n'importe quel logiciel) ouvrir simplement une Tform au lieu d'avoir une impression.
    - sur cette TForm pouvoir soit annuler l'impression, soit poursuivre pour vraiment imprimer.

    J'ai cherché longuement, lu pas mal de chose, télécharger des projets, mais j'y comprends rien.

    Un example serais le bienvenu, un début d'explication, une piste...

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    +1

    j'aimerais faire la même chose

    d'après ce projet, j'ai comme l'impression qu'il "suffit" d'écrire une DLL et de la déclarer avec des fichiers "gpd"...mais je n'ai pas trouvé d'information très claire sur le sujet ni pris le temps de creuser les sources.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    +1

    j'aimerais faire la même chose
    ...
    Hé bien comme çà on est déjà 2

    Je vais terminer mon nouveau module actuel et ensuite j'attaque ce problème.

    MErci pour le lien.

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 082
    Par défaut
    Ce n'est qu'un fichier parmis tant d'autres, en plus, cela semble même pas être vraiment le driver mais une surcouche à PostScript
    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

  5. #5
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    bon alors j'ai réussi à faire une DLL sous Delphi 32 bits qui fonctionne comme imgport.dll de ImagePrinter...par contre je galère sur son installation.

    c'est à dire que si j'installe ImagePrinter et que je remplace la DLL par la mienne dans c:\windows\system32 ça fonctionne...mais je n'ai pas encore réussi à installer moi même la DLL

    j'en profite pour tester sous Win7/64bits, qui n'est pas supporté par ImagePrinter, et tout ce que j'arrive à faire c'est de planter le spooler sans trop d'information

    Le principe de ImagePrinter c'est d'utiliser UNIDRV de Windows pour récupérer une impression PCL, ensuite le code PCL est interpréter pour le transformer en Bitmap puis en JPG, PDG, TIFF, etc; tout cela c'est le boulot de la DLL ci-dessus qui est un Print Monitor
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Ce n'est qu'un fichier parmis tant d'autres, en plus, cela semble même pas être vraiment le driver mais une surcouche à PostScript
    Si tu inspect les clé de registre de PDFCreator, cela reste cohérent par rapport au fichier ModPrinter.bas.

    Citation Envoyé par Paul TOTH Voir le message
    c'est à dire que si j'installe ImagePrinter et que je remplace la DLL par la mienne dans c:\windows\system32 ça fonctionne...mais je n'ai pas encore réussi à installer moi même la DLL
    Tu pourrais me donner un message d'erreur ou autre, j'ai pas mal de contact en administration réseau et autre...

    Citation Envoyé par Paul TOTH Voir le message
    j'en profite pour tester sous Win7/64bits, qui n'est pas supporté par ImagePrinter, et tout ce que j'arrive à faire c'est de planter le spooler sans trop d'information
    Je ne t'apprends rien si je te dis que ta DLL 32 ne marchera jamais sur un 64bits...



    Sinon ok pour le principe, même si je ne sais pas encore (moi) l'intepréter ou même le programmer.

    Sinon, je suis la piste du registre, j'analyse déjà les cles de PDFCreator, et je m'amuse avec tous les drivers que j'ai récupérés, dont ton premier lien.
    J'ai aussi en interne "au boulot" un logiciel qu'on utilise qui fait exactement ce que je cherche, il est développé en windev, donc je le scrute également, j'ai pas encore fais la jonction entre le l'imprimante et l'ouverture d'une form.

    A suivre

  7. #7
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Par défaut
    Re

    Je vais regardé de mon coté, mais juste comme cela j'éviterai d'écrire sur C:\
    sous seven 32 ou 64 d'ailleurs.

    A+

  8. #8
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    ah, au fait, HANDLE c'est un THandle, mais dans mon code j'utilise un objet vu que les "handle" sont des valeurs opaques et que moi j'ai besoin d'un objet ... hum...faut tout de même que je vérifie la taille d'un HANDLE en 64bits...en 32bits en tout cas c'est la même taille qu'un pointeur et donc qu'une instance objet.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #9
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Par défaut
    bon effectivement sur XP ça marche.

    Sous Seven 64 bits impossible de remonter un port :
    * je crée la clé de registre
    * je place la Dll dans system32 ou même sysWOW64
    * un petit coup de net stop/net start spooler

    Le port n’apparaît pas dans la liste des port que se soit sur une imprimante existante ou une imprimante nouvelle.

    Comment as-tu pu avoir une erreur de spooler 64 chez toi ? cela sous-entend que tu aurai le port accessible ?

    Sinon avec ton info de THandle, la compilation de la Dll64 fonctionne, évidement j'arrive pas à la tester, je la mets ici au cas où:

    A suivre
    Fichiers attachés Fichiers attachés

  10. #10
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par BuzzLeclaire Voir le message
    bon effectivement sur XP ça marche.

    Sous Seven 64 bits impossible de remonter un port :
    * je crée la clé de registre
    * je place la Dll dans system32 ou même sysWOW64
    * un petit coup de net stop/net start spooler

    Le port n’apparaît pas dans la liste des port que se soit sur une imprimante existante ou une imprimante nouvelle.

    Comment as-tu pu avoir une erreur de spooler 64 chez toi ? cela sous-entend que tu aurai le port accessible ?

    Sinon avec ton info de THandle, la compilation de la Dll64 fonctionne, évidement j'arrive pas à la tester, je la mets ici au cas où:

    A suivre
    non j'ai trois comportements:

    1) XP: ok
    2) Seven32bits: le port apparait mais ne fonctionne pas
    3) Seven64bits: le port n'apparait pas et quelque secondes après le "net start spooler" le service se plante.

    j'ai cette erreur dans l'observateur d'évènements
    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
    20
    21
    22
    23
     
    - <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
    - <System>
      <Provider Name="Service Control Manager" Guid="{555908d1-a6d7-4695-8e1e-26931d2012f4}" EventSourceName="Service Control Manager" /> 
      <EventID Qualifiers="49152">7034</EventID> 
      <Version>0</Version> 
      <Level>2</Level> 
      <Task>0</Task> 
      <Opcode>0</Opcode> 
      <Keywords>0x8080000000000000</Keywords> 
      <TimeCreated SystemTime="2012-10-31T19:11:31.590742200Z" /> 
      <EventRecordID>267355</EventRecordID> 
      <Correlation /> 
      <Execution ProcessID="608" ThreadID="7052" /> 
      <Channel>System</Channel> 
      <Computer>execute.re</Computer> 
      <Security /> 
      </System>
    - <EventData>
      <Data Name="param1">Spouleur d’impression</Data> 
      <Data Name="param2">15</Data> 
      </EventData>
      </Event>
    je dois supprimer la clé de registre pour pouvoir le relancer sans plantage.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  11. #11
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Par défaut
    Voilà ou j'en suis

    Je confirme que cette clé est la seule utile pour créer le monitor port
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors

    En cherchant, j'ai trouvé cella que j'ai testé jusqu'au bout :
    REDMON

    * Je lance le fichier Setup64.exe
    Dans le registre après ce lancement seule la clé HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors lié à la dll RedMon64.dll qui est copier uniquement dans c:\windows\system32 (sans oublié les sous-clé automatiques ControlSet001 et ControlSet002)

    * J'ajoute une imprimante locale et je ne trouve aucun port
    Je fais un coup de net stop/net start
    * J'ajoute une imprimante locale et là :
    1. Je choisi créer un nouveau port
    2. je prends Redirected port (qui est spécifique à redMon)
    3. Le Port Name est proposé en RPT1:, là la base de registre ajoute une clé
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Redirected Port\Ports\RPT1:
    4. Ensuite je prends une imprimante "HP DeskJEt 450"


    A partir de là l'imprimante est installé et lié au port RPT1: sur le PrinterMonitor RedMon et don la DLL RedMon64

    J'ouvre les propriétés de l'imprimante, je vais dans l'onglet Ports je clique sur le bouton Configurer Port et là on retrouve la même fenêtre fais part PDFCreator. Dans la zone Redirect this port to the program, je mets un petit projet1.exe, lorsque j'imprimante le projet s'ouvre...

    En résumé, le problème viens juste de la concéption de la DLL64.

    A suivre

Discussions similaires

  1. Comment créer une imprimante virtuelle?
    Par lbeaumonp dans le forum Windows
    Réponses: 4
    Dernier message: 26/01/2014, 22h26
  2. Créer une imprimante virtuelle
    Par christophertux dans le forum Virtualisation
    Réponses: 4
    Dernier message: 06/10/2010, 13h38
  3. Créer une imprimante virtuel
    Par neodelphi2007 dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 28/02/2009, 08h21
  4. Créer une imprimante sur réseau local.
    Par byloute dans le forum Windows XP
    Réponses: 5
    Dernier message: 11/10/2007, 13h25
  5. Créer un compte qui donne accès seulement à une imprimante
    Par bart64 dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 06/09/2006, 19h19

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