none
Récupérer la commande clic droit - imprimer? RRS feed

  • Question

  • Bonjour,

    Je souhaite réaliser un programme en VB qui me permette:

         1. de choisir un nombre x de fichier (.doc, .xls, .pdf, . xyz).

         2. de trier ces fichiers

         3. de les imprimer.

    Les points 1 et 2 ne me font pas peur, par contre je n'arrive pas à trouver une solution pour le point 3.

     

    Je suis parti dans l'idée de réutiliser la commande de l'explorateur windows: clic droit - imprimer qui ouvre le fichier, l'imprimer puis le referme.

    Est-ce une bonne solution?

    Est t'il possible de récupérer cette fonction? si oui comment? quel est l’outil qui le permet.

     

    Merci d'avance pour votre réponse.


    dimanche 16 octobre 2011 20:19

Réponses

Toutes les réponses

  • Bonjour,

     

    Oui c'est possible de récupérer la commande du clic droite imprimé mais je doute que dans un programme Visual Basic soit la meilleurs solution !
    Je suis pas sur de comprendre votre demande dans le sens ou cette commande existe deja dans Windows alors pourquoi vouloir la reprogrammé ce qui existe ?

    A bientôt


    Cordialement,
    Xavier TALOUR
    Alias Troxsa SendMail
    Voir le profil de Xavier TALOUR sur LinkedIn
    dimanche 16 octobre 2011 21:59
    Auteur de réponse
  • Bonjour Xavier et Merci de la réponse.

     

    La raison pour laquelle je souhaite "reprogrammer" cette fonction d'impression est que dans l'explorateur Windows il n'est pas possible de trier l'impression de plusieurs fichier (sinon manuellement en les imprimant un à un) de même si les fichiers que l'on souhaite imprimer ce trouve dans des dossiers différent il n'est pas possible de les imprimer en une fois.

    Je souhaite réaliser une fonction qui me permette de sélectionner plusieurs documents dans plusieurs dossiers différents. Ensuite de les affichers dans une liste et de pouvoir trier cette liste (choisir quel fichier sera imprimer en 1er, en 2ème, ...). puis enfin de lancer l'impression des fichiers depuis mon application.

    Pour réaliser cette impression,, je pensais utiliser la même fonction que le Clic droit - imprimer de l'explorateur.

     

    Est ce que la fonction que je souhaite implémenter existe déjà? si oui, je ne la connais pas et je suis donc preneur.

    Sinon je veux bien que tu m'expliques comment récupérer la commande du clic droit - imprimer.

    Merci d'avance pour ta réponse et bonne journée

    lundi 17 octobre 2011 05:21
  • Bonjour Xavier et Merci de la réponse.

     

    La raison pour laquelle je souhaite "reprogrammer" cette fonction d'impression est que dans l'explorateur Windows il n'est pas possible de trier l'impression de plusieurs fichier (sinon manuellement en les imprimant un à un) de même si les fichiers que l'on souhaite imprimer ce trouve dans des dossiers différent il n'est pas possible de les imprimer en une fois.

    Je souhaite réaliser une fonction qui me permette de sélectionner plusieurs documents dans plusieurs dossiers différents. Ensuite de les affichers dans une liste et de pouvoir trier cette liste (choisir quel fichier sera imprimer en 1er, en 2ème, ...). puis enfin de lancer l'impression des fichiers depuis mon application.

    Pour réaliser cette impression,, je pensais utiliser la même fonction que le Clic droit - imprimer de l'explorateur.

     

    Est ce que la fonction que je souhaite implémenter existe déjà? si oui, je ne la connais pas et je suis donc preneur.

    Sinon je veux bien que tu m'expliques comment récupérer la commande du clic droit - imprimer.

    Merci d'avance pour ta réponse et bonne journée


    Bonjour Julien,

    Je ne compends pas tout avec le clique droit, car tu peux en effet sélectionner un fichier et son chempin avec l'explorateur, puis le mettre dans une liste (à te suivre), puis de cette liste décider par un clique par exemple, quels seront les fichiers à imprimer et l'ordre, ce qui ira dans une autre liste, et in fine par un bouton "imprimer", lancer l'impression (du contenu des fichiers)... à ce stade je ne vois pas pourquoi tu parles toujours de clique droit... Car tu dis vouloir choisir l'impression comme dans lexplorateur avec le clique droit, mais tu dis encore vouloir mettre dans des listes pour décider de l'ordre, alors que vient faire le clique droit de l'explorateur, qui dans cette configuration n'est utilisé que pour choisir des fichiers (avec son bouton, et non un clique) ?

    Concernant l'impression proprement dite, je ne suis pas certain que ça puisse se faire directement avec un tel mélange de types de fichiers, car le fichier texte va être directement imprimables, pour les autres j'en doute, il faudra passer sûrement par l'objet qui l'imprime (doc = Word) ou encore par un code propre à imprimer ce type de fichier, en fait je ne m'y connais pas trop dans ce genre d'impression, mais je doute (à vérifier) qu'on puisse directement lancer n'importe quel extension de fichier et avoir con contenu à l'impression, au risque d'avoir n'importe quoi, comme son entête par exemple...

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    lundi 17 octobre 2011 10:00
  • Bonjour Xavier et Merci de la réponse.

     

    La raison pour laquelle je souhaite "reprogrammer" cette fonction d'impression est que dans l'explorateur Windows il n'est pas possible de trier l'impression de plusieurs fichier (sinon manuellement en les imprimant un à un) de même si les fichiers que l'on souhaite imprimer ce trouve dans des dossiers différent il n'est pas possible de les imprimer en une fois.

    Je souhaite réaliser une fonction qui me permette de sélectionner plusieurs documents dans plusieurs dossiers différents. Ensuite de les affichers dans une liste et de pouvoir trier cette liste (choisir quel fichier sera imprimer en 1er, en 2ème, ...). puis enfin de lancer l'impression des fichiers depuis mon application.

    Pour réaliser cette impression,, je pensais utiliser la même fonction que le Clic droit - imprimer de l'explorateur.

     

    Est ce que la fonction que je souhaite implémenter existe déjà? si oui, je ne la connais pas et je suis donc preneur.

    Sinon je veux bien que tu m'expliques comment récupérer la commande du clic droit - imprimer.

    Merci d'avance pour ta réponse et bonne journée


    Bonjour Julien,

    Je ne compends pas tout avec le clique droit, car tu peux en effet sélectionner un fichier et son chempin avec l'explorateur, puis le mettre dans une liste (à te suivre), puis de cette liste décider par un clique par exemple, quels seront les fichiers à imprimer et l'ordre, ce qui ira dans une autre liste, et in fine par un bouton "imprimer", lancer l'impression (du contenu des fichiers)... à ce stade je ne vois pas pourquoi tu parles toujours de clique droit... Car tu dis vouloir choisir l'impression comme dans lexplorateur avec le clique droit, mais tu dis encore vouloir mettre dans des listes pour décider de l'ordre, alors que vient faire le clique droit de l'explorateur, qui dans cette configuration n'est utilisé que pour choisir des fichiers (avec son bouton, et non un clique) ?

    Concernant l'impression proprement dite, je ne suis pas certain que ça puisse se faire directement avec un tel mélange de types de fichiers, car le fichier texte va être directement imprimables, pour les autres j'en doute, il faudra passer sûrement par l'objet qui l'imprime (doc = Word) ou encore par un code propre à imprimer ce type de fichier, en fait je ne m'y connais pas trop dans ce genre d'impression, mais je doute (à vérifier) qu'on puisse directement lancer n'importe quel extension de fichier et avoir con contenu à l'impression, au risque d'avoir n'importe quoi, comme son entête par exemple...

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire

    Bonjour Xavier,

     

    Non je ne veux pas faire quelquechose d'aussi compliqué.

    Je veux simplement lancer commande(le même code) que " clic droit imprimer" dans mon application.

     

    Par exemple, mon application établirait la liste de chemin(et fichier) suivante:

    - C:\fruit\pomme.txt

    - C:\fruit\banane.xls

    - C:\légume\courgette.doc

     

    Si j'utilise simplement l'explorateur Windows pour imprimer ceci je dois faire manuellement " clic droit imprimer" sur chaque fichier. Windows ouvre, lance l'impression et referme chaque document.

    Je souhaite faire exactement la même chose mais de façon automatique.

    D'où ma question: peut t'on lancer la même commande que " clic droit imprimer" depuis une application en VB.

    Si par contre vous avez une meilleures idée, je suis preneur.

     

    salutations

    lundi 17 octobre 2011 10:20
  • ...

    Je souhaite réaliser une fonction qui me permette de sélectionner plusieurs documents dans plusieurs dossiers différents. Ensuite de les affichers dans une liste et de pouvoir trier cette liste (choisir quel fichier sera imprimer en 1er, en 2ème, ...). puis enfin de lancer l'impression des fichiers depuis mon application.

    ...

     


     

    '
    ' exemple
    Option Explicit On
    Public Class Form1
      Dim typeFichier As String
    
      Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ListBox1.Items.Clear()
        ListBox2.Items.Clear()
      End Sub
    
      Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        OpenFileDialog1.Title = "Choisir le fichier à imprimer"
        OpenFileDialog1.Multiselect = False
        If OpenFileDialog1.ShowDialog = DialogResult.OK Then
          OpenFileDialog1.Dispose()
          ListBox1.Items.Add(OpenFileDialog1.FileName)
        End If
      End Sub
    
      Sub ListBox1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.DoubleClick
        If ListBox1.SelectedIndex < 0 Then Exit Sub
        ListBox2.Items.Add(ListBox1.Items(ListBox1.SelectedIndex))
        ListBox1.Items.RemoveAt(ListBox1.SelectedIndex)
      End Sub
      
      Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ' imprimer
        Dim i As Integer
        Dim pos As Integer
        If ListBox2.Items.Count < 1 Then
          MsgBox("rien à imprimer")
          Exit Sub
        End If
        For i = 0 To ListBox2.Items.Count - 1
          pos = InStrRev(ListBox2.Items(i), ".")
          typeFichier = Mid(ListBox2.Items(i), pos + 1, Len(ListBox2.Items(i)) - pos)
          Select Case typeFichier
            Case "doc"
              MsgBox("doc") ' méthode d'impression call ...
            Case "txt"
              MsgBox("txt") ' méthode d'impression call ...
            Case Else
              MsgBox("fichier invalide" & vbLf & typeFichier & vbLf & ListBox2.Items(i), vbExclamation)
          End Select
        Next i
      End Sub
    
    End Class
    
    
    



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    lundi 17 octobre 2011 10:52
  • Bonjour,

    Pour l'impression elle-même voir http://msdn.microsoft.com/fr-fr/library/system.diagnostics.processstartinfo.verb.aspx.

    Le principe est de lancer le document via Process.start en lui indiquant le "verbe" print ce qui déclenchera l'impression par l'application concernée.

    (finalement j'ai trouvé un exemple de code sur http://msdn.microsoft.com/fr-fr/library/e8zac0ca(v=vs.90).aspx qui imprime un fichier .doc)


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    lundi 17 octobre 2011 14:39
    Modérateur
  • Bonjour,

    Pour l'impression elle-même voir http://msdn.microsoft.com/fr-fr/library/system.diagnostics.processstartinfo.verb.aspx.

    Le principe est de lancer le document via Process.start en lui indiquant le "verbe" print ce qui déclenchera l'impression par l'application concernée.

    (finalement j'ai trouvé un exemple de code sur http://msdn.microsoft.com/fr-fr/library/e8zac0ca(v=vs.90).aspx qui imprime un fichier .doc)


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".


    Bonjour Patrice,

    J'ai légèrement modifier le code de l'exemple : http://msdn.microsoft.com/fr-fr/library/e8zac0ca(v=vs.90).aspx et ça fonctionne bien même pour des images ou .pdf. 

    Merci!

     

    Je posterais le code quand je l'aurais terminé.

    Merci à vous tous

     

    Salutations Julien

    mardi 18 octobre 2011 07:09
  • Bonjour Julien Prest,

    Vous pouvez aussi faire des modifications dans le registre affin de faire ce que vous voulez a partir de votre programme

    Vous trouverez toute les informations sur le lien suivant :Creating Shortcut Menu Handlers

    Il vous reste qu'a choisir parmi les choix proposer :)

     

    A bientôt


    Cordialement,
    Xavier TALOUR
    Alias Troxsa SendMail
    Voir le profil de Xavier TALOUR sur LinkedIn
    mardi 18 octobre 2011 15:58
    Auteur de réponse
  • Bonjour Julien Prest,

    Vous pouvez aussi faire des modifications dans le registre affin de faire ce que vous voulez a partir de votre programme

    Vous trouverez toute les informations sur le lien suivant :Creating Shortcut Menu Handlers

    Il vous reste qu'a choisir parmi les choix proposer :)

     

    A bientôt


    Cordialement,
    Xavier TALOUR
    Alias Troxsa SendMail
    Voir le profil de Xavier TALOUR sur LinkedIn


    Merci Xavier,ce lien est très intéressant !

     

    Salutations

    mercredi 19 octobre 2011 05:26
  • ...

    Je souhaite réaliser une fonction qui me permette de sélectionner plusieurs documents dans plusieurs dossiers différents. Ensuite de les affichers dans une liste et de pouvoir trier cette liste (choisir quel fichier sera imprimer en 1er, en 2ème, ...). puis enfin de lancer l'impression des fichiers depuis mon application.

    ...

     


     

     

    '
    ' exemple
    Option Explicit On
    Public Class Form1
      Dim typeFichier As String
    
      Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ListBox1.Items.Clear()
        ListBox2.Items.Clear()
      End Sub
    
      Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        OpenFileDialog1.Title = "Choisir le fichier à imprimer"
        OpenFileDialog1.Multiselect = False
        If OpenFileDialog1.ShowDialog = DialogResult.OK Then
          OpenFileDialog1.Dispose()
          ListBox1.Items.Add(OpenFileDialog1.FileName)
        End If
      End Sub
    
      Sub ListBox1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.DoubleClick
        If ListBox1.SelectedIndex < 0 Then Exit Sub
        ListBox2.Items.Add(ListBox1.Items(ListBox1.SelectedIndex))
        ListBox1.Items.RemoveAt(ListBox1.SelectedIndex)
      End Sub
      
      Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ' imprimer
        Dim i As Integer
        Dim pos As Integer
        If ListBox2.Items.Count < 1 Then
          MsgBox("rien à imprimer")
          Exit Sub
        End If
        For i = 0 To ListBox2.Items.Count - 1
          pos = InStrRev(ListBox2.Items(i), ".")
          typeFichier = Mid(ListBox2.Items(i), pos + 1, Len(ListBox2.Items(i)) - pos)
          Select Case typeFichier
            Case "doc"
              MsgBox("doc") ' méthode d'impression call ...
            Case "txt"
              MsgBox("txt") ' méthode d'impression call ...
            Case Else
              MsgBox("fichier invalide" & vbLf & typeFichier & vbLf & ListBox2.Items(i), vbExclamation)
          End Select
        Next i
      End Sub
    
    End Class
    
    
    

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    Je verrais bien une fonction Drag and Drop pour ajouter des fichiers ! ( une petite idée au passage )
    mercredi 26 octobre 2011 17:39
  • Bonsosir Zothop,

    Oui... il faut plus de code et c'est moins rapide de balader les fichiers à la souris, par contre c'est plus élégant, mais je réserve plutôt ça à des logiciels pour particuliers...

    J'en ai fait un par exemple pour faire ses courses (logiciel), donc dans les produit déclarés on compose sa liste, là j'utilise le drag and drop (vb6) qui au "poser" demande le nombre d'articles. Mais en vb6 je n'arrivais pas à matérialiser ce que je voulais lors du tranfert (icône ou autre), alors que je crois qu'en vbNet c'est résolu, je ne sais plus, je n'ai fais qu'une fois du drag en Net, c'est assez joli au point de vue visuel...

    :o)

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    mercredi 26 octobre 2011 18:08