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 :

Détection imprimante hors service


Sujet :

Langage Delphi

  1. #1
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut Détection imprimante hors service
    Subject : Détection imprimante hors service



    Bonjour,

    Je suis toujours à la recherche de mon problème d'imprimante...

    En gros pour résumer rapidement :
    - Si l'imprimante devant effectuer une impression est hors service (pour x raison), il faut le détecter afin que les opérations suivantes ne s'executent.

    Après maintes recherches en tournant autour du pot, je suis tombé sur une propriété de TPrinter qui peut être intéressante, il s'agit de Printing.

    Un p'tit coup de F1 et :
    Printing permet de déterminer si un travail d'impression est en cours.

    Printing vaut true quand l'application a appelé la méthode BeginDoc mais qu'elle n'a pas encore appelé la méthode EndDoc
    (ou la méthode Abort)
    .


    J'ai donc bêtement déduit et appliqué cette idée, en ajoutant une sous-procédure juste sous le Begin.Doc d'une procédure de test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
     BeginDoc; 
     
    TestSiPrinteuseOK(Sender);  // sous le BeginDoc afin de savoir s'il était bien appelé
    ...
    Et voici cette sous-procédure appelée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.TestSiPrinteuseOK(Sender: TObject);
     begin
      if Printer.Printing then
         ShowMessage('OK !')
        else
      ShowMessage('Niet !');
    end;
    Mais... que l'imprimante soit en impression, ou bien si elle est débranchée, toujours le ShowMessage 'OK !'

    Merci d'avance de toute idée

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Voir la fonction getprinter de l'API windows (pas celle de l'objet Delphi Printer) .
    http://msdn.microsoft.com/library/de...tspol_1gky.asp

  3. #3
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Rebonjour,
    Pour accéder à la fonction GetPrinter, ajouter dans la clause "uses" l'unité WinSpool.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 210
    Points : 190
    Points
    190
    Par défaut
    Je ne suis pas sur, mais je crois qu'avant, en branchement sur le port LPT d'un ordinateur, on pouvait récupérer certaines infos (type 'Busy', 'error'). Va voir à http://lab.erasme.org/parallele/

    Il doit toujours y avoir moyen de récupérer cette info s c'est du parallèle. Autrement, en USB, comme chaque périphérique donne son 'état', il y a peut être quelque chose à trouver de ce côté.

    Autrement, va voir là : http://support.microsoft.com/default...-us;202480#kb2
    Enfin, si je lis bien :
    Printing vaut true quand l'application a appelé la méthode BeginDoc mais qu'elle n'a pas encore appelé la méthode EndDoc
    et dans ton code tu fais 'begindoc' puis tu testes... c'et normal que est 'TRUE' à chaque fois

  5. #5
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Bonsoir,

    Merci de vos réponses, je vais approfondir tout ça tranquillement.

    Je précise que pour la détection LPTx, là c'est impec grâce à Chrristopher.

    Le seul point qui m'est inconu est si une imprimante USB - désormais la majorité des cas - est employée.

    Autrement dit, seulement l'USB.

    @+

    ======================================
    Après des pages et des pages visitées

    Je ne suis pas le seul à chercher en vain, ici il est question de la fonction GetPrinter.

    Je continue l'approfondissement.

  6. #6
    Membre averti Avatar de chtiot
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 385
    Points : 403
    Points
    403
    Par défaut
    en surveillant le serveur d'impression tu devrais pouvoir détecter les défaillances.

    regardes dans la page sources

    http://delphi.developpez.com/sources...no40source0071

  7. #7
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Bonjour,

    Merci beaucoup chtiot de cette trouvaille, mais ce code ne fonctionne pas sous Win 98


    Citation Envoyé par chtiot
    en surveillant le serveur d'impression tu devrais pouvoir détecter les défaillances.

    regardes dans la page sources

    http://delphi.developpez.com/sources...no40source0071
    Je bosse sous Windows 98se et si des utilisateurs sont dans le même cas = ca²

    @+

  8. #8
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Bonjour,

    Citation Envoyé par diam's
    [...] Enfin, si je lis bien :
    Printing vaut true quand l'application a appelé la méthode BeginDoc mais qu'elle n'a pas encore appelé la méthode EndDoc
    et dans ton code tu fais 'begindoc' puis tu testes... c'et normal que est 'TRUE' à chaque fois
    Oui et j'ai même tenté de placer ce Printig après le EndDoc, mais là c'est toujours "False".

    Personne ne sait comment utiliser convenablement, ce Printing de façon simple à détecter si le travail de l'imprimante est en cours ?

    Merci d'avance

  9. #9
    Membre averti Avatar de chtiot
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 385
    Points : 403
    Points
    403
    Par défaut
    regardes un peu cet exemple en vb trouvé sur msdn, il me semble que ça fonctionne sous win98 aussi :

    http://support.microsoft.com/default...d=kb;fr;202480

  10. #10
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Bonsoir,

    Oui merci chtiot de ce lien, j'étais déjà tombé dessus, mais je ne trave rien au VB

    Ici en FAQ, j'avais aussi remarqué que cela était fastoche sur des feuilles excel, également en d'autres langages.

    Mais en Delphi sans rapport avec des feuilles excel ou équivalent... mystère et boule de gum.

    A moins d'adapter ce code VB en delphi, mais là je suis out and ko d'avance

    Je donne le lien de ma précédente recherche aboutie au niveau seulement du port LPTx mais pôô USB :
    http://www.developpez.net/forums/viewtopic.php?t=439174

    Si ça peu aider un jour d'autres développeurs.

    @+

  11. #11
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 258
    Points : 558
    Points
    558
    Par défaut
    Bonjour J-P,

    Me revoilà!!!

    Bon je te propose un programme (composant complet) qui te permet de détecter la connexion ou la déconnexion d'un périphérique USB. Voici l'adresse URL correspondante :

    http://www.swissdelphicenter.ch/torr...de.php?id=2211

    Allez à plus et bon dev,

    Christopher

  12. #12
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Bonsoir,

    Christopher, tu me lâches pas

    J'y retourne et je te tiens au jus !

    Merci !!!

    @+

    =========================================
    Voilà, je reviens et c'est pas triste ;o)



    Encore une drôle d'histoire :

    J'enregistre le code sous u_URL.pas, ensuite tout se passe impec, ajout à la liste, compil et tout et tout, mais je ne trouve nulle part de compo !

    Ce n'est pas le premier que j'installe via un code pourtant.

    J'ai tenté de le réinstaller par dessus et là, plantage en USER.EXE de Delphi.

    Je l'ai ensuite viré du projet de compil, j'ai renommé le .pas en Usb.pas, ainsi que la première ligne du code tout en haut :
    J'ai retenté de l'installer et comme au début = tout impec mais ensuite inconnu au bataillon... = je ne le retrouve nulle part en palette.

    Au fait au cours de la compil, j'ai eu ces lignes de non autorisé... c'est quoi ça :


    [Avertissement] Usb.pas(56): Symbole 'AllocateHWnd' non autorisé
    [Avertissement] Usb.pas(62): Symbole 'DeallocateHWnd' non autorisé


    Ça me fait penser l'autre fois après avoir installé la ZLib, j'ai cherché et cherché, heuuuu il s'agissait d'une classe et non d'un compo

    Je suis sous Win98se, peut-être que non compatible ?

    C'est mal parti :o

    @+

    PS : Oupssss pour voir, j'ajoute à un projet en Classes Usb et ça ne s'efface pôô... :
    (Ou peut-être pour ça que le nom de ce compo (?) se nommait U_Usb ???)

  13. #13
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Bonjour,

    J'ai peut-être trouvé des choses très intéressantes :
    http://www.efg2.com/Lab/Library/Delphi/IO/IOResult.htm

    Ce cadre :
    Printers and IOResult: UseNet Post by Robert Cerny
    Using IOResult with Reset: UseNet Post by Reiter Alexander

    FileExists Using IOResult: UseNet Post by Sean Kendrick
    Mike Copeland's UseNet Post alternative to using FileExists With IOResult


    J'y retrourne

    @+

Discussions similaires

  1. Détection réseau wifi hors service
    Par Michel DELAVAL dans le forum Windows XP
    Réponses: 5
    Dernier message: 14/02/2009, 10h48
  2. Graveur capricieux : est-il hors service ?
    Par screamtime dans le forum Périphériques
    Réponses: 2
    Dernier message: 10/04/2007, 17h03

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