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

C# Discussion :

probleme impression


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut probleme impression
    Bonjour,
    Voila je suis une débutante en c# et je cherche depuis une semaine a intercepter une impression mais je n'ai pas trouvé encore comment on fait.Si quelqu'un a une idée je suis preneuse.
    Je vous explique mon problème. Je veux créer une interface qui s'ouvre a chaque fois qu'on lance une impression.Mon interface doit intercepter cette impression,récupérer le document a imprimer et stopper l'impression qui est déjà lancée.Le document doit s'imprimer a partir de mon interface.
    J'espère que j'ai été assez clair Merci.
    Au début j'ai pensé a utiliser le processus d'impression mais je ne sais pas non plus comment le récupérer.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 82
    Points : 89
    Points
    89
    Par défaut
    Je crois que tu devras au moins utiliser les wmi
    Voilà un petit bout de code, pour savoir si une impression est envoyée à ton imprimante.
    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
    24
    private Boolean PrintEventDetectedHandler()
            {
                System.Collections.Specialized.StringCollection printJobCollection = new System.Collections.Specialized.StringCollection();
                //foreach (System.Management.PropertyData printJobData in e.NewEvent.Properties)
                //{
                string searchQuery = "SELECT * FROM Win32_PrintJob";
     
                System.Management.ManagementObjectSearcher searchPrintJobs = new System.Management.ManagementObjectSearcher(searchQuery);
                System.Management.ManagementObjectCollection prntJobCollection = searchPrintJobs.Get();
                foreach (System.Management.ManagementObject prntJob in prntJobCollection)
                {
                    String jobName = prntJob.Properties["Name"].Value.ToString();
                    char[] splitArr = new char[1];
                    splitArr[0] = Convert.ToChar(",");
                    string printerName = jobName.Split(splitArr)[0];
                    string printJobId = jobName.Split(splitArr)[1];
                    if (printerName.ToUpper() == NomImprimante)//UNE IMPRESSION SUR MON IMPRIMATNE
                    {
                        return true;
                    }
     
                }
                return false;
            }

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    j'ai déjà utilisé le WMI pour récupérer le document et aussi suspendre l'impression.Mais ca ne marche pas.Je lance d'abord mon application et après je lance l'impression.Sauf que ca continue d'imprimer normalement comme si mon application n'existe pas.lol
    Voila ce que j'ai fait comme code:
    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
    ManagementObjectSearcher recherche;
                recherche = new ManagementObjectSearcher("SELECT * FROM Win32_PrintJob");
     
      //execute la requete qui recupere les info du systeme
                ManagementObjectCollection management_tableau = recherche.Get();
                try
                {
                    foreach (ManagementObject printjob in management_tableau)
                    {
     
                        //permet de mettre une pause
                        printjob.InvokeMethod("Pause", null);
                        //permet de recuperer le document.
                        string document = printjob.Properties["Document"].Value.ToString();
                        printDocument1.DocumentName = document;
                       // printDocument1.Print();
                        printjob.Delete();

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 82
    Points : 89
    Points
    89
    Par défaut
    À mon avis, tu attrapes ton impression et elle s'imprime déjà. Essaie de suspendre l'impression avant de ton delete en cliquant bouton de droite sur ton imprimante et "suspendre l'impression". Comme ça tu vas savoir si ton code marche.

    Voilà un lien qui a tout ce qu'il te faut pour ça.

    http://www.codeproject.com/KB/printi...rusingwmi.aspx

  5. #5
    Membre habitué Avatar de swif79
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Points : 169
    Points
    169
    Par défaut
    En complément du lien de girouxv, pour intercepter à temps ton impression, il y a surrement mieux mais tu pourrai utiliser un FileSystemWatcher appliquer au dossier de ton spooler d'impression qui te lévera un évènement dès qu'un fichier y es créer par exemple :

    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
     
     
    FileSystemWatcher _FileSystemWatcher = new FileSystemWatcher();
    _FileSystemWatcher.Path = @"C:\Windows\system32\spool\PRINTERS";
    _FileSystemWatcher.NotifyFilter = NotifyFilters.DirectoryName | NotifyFilters.FileName | NotifyFilters.Attributes;
    _FileSystemWatcher.IncludeSubdirectories = true;
     
    _FileSystemWatcher.Created += new FileSystemEventHandler(EventRaised);
     
    try
    {
        _FileSystemWatcher.EnableRaisingEvents = true;
    }
    catch (ArgumentException ex)
    {
         throw new ArgumentException(ex.Message, ex);
    }
     
    private void EventRaised(object sender, FileSystemEventArgs e)
    {
    Le code WMI
    }

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut probleme impression
    Merci swif79 c'est exactement ce que je cherche a faire.
    sauf que j'ai un autre petit problème
    Je n'arrive pas a utiliser la variable qui récupère le nom du document dans la boucle foreach.On me dit que la variable est non assigné.Je voulais l'utiliser en dehors de la boucle foreach.
    Merci.

Discussions similaires

  1. [CSS] probleme impression
    Par fabricew59 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 06/07/2006, 15h48
  2. [VB]Probleme impression texte
    Par molpor dans le forum VB 6 et antérieur
    Réponses: 21
    Dernier message: 03/04/2006, 13h10
  3. probleme impression page
    Par toome dans le forum Langage
    Réponses: 38
    Dernier message: 17/11/2005, 15h29
  4. [VB.NET] Probleme impression document word
    Par lord_kyshow dans le forum ASP.NET
    Réponses: 36
    Dernier message: 09/06/2005, 16h07
  5. [FLASH MX 2004] probleme impression
    Par dens63 dans le forum Flash
    Réponses: 6
    Dernier message: 30/04/2004, 14h29

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