none
Comment lire les propriétés du port d'une imprimante en VB .Net? RRS feed

  • Question

  • Bonjour,

    après avoir longuement cherché dans divers sites, je ne trouve pas la réponse à ma question.

    Est-il possible dans une application développée en VB.Net (Visual Basic 2010 Express ), et si oui comment, de lire les propriétés du port d'une imprimante réseau (au préalable ajoutée sur la machine qui exécute l'application) pour en extraire l'adresse IP - si celui-ci est de type TCP/IP?

    J'ai ce besoin pour rendre "user friendly" le paramétrage d'un process d'impression directe par client TCP. L'idée étant que l'utilisateur sélectionne une imprimante par son nom dans une liste et le programme va lire son adresse IP.

    Merci d'avance!

    PS: application exécutée sous Windows XP SP3 ou Windows 7, .Net Framework 3.5 ou supérieur.

    mercredi 8 janvier 2014 11:24

Réponses

  • Bonjour,

    A tester...

    Lors de mon test le code ci-dessous prends mon imprimante par défaut et ne m'affiche pas de port puisque

    elle n'est pas en réseau. Je crois que le code ci-dessous est fonctionnel :-)

            Dim tmpPD As New PrintDialog
            Dim sb As New StringBuilder
            Dim newLine As String = Environment.NewLine
    
            m_PS = tmpPD.PrinterSettings
            sb.Append("PrinterName:  ")
            sb.Append(m_PS.PrinterName)
            sb.Append(newLine)
    
            Dim type As Type = GetType(PrinterSettings)
            Dim fi As FieldInfo = type.GetField("outputPort", BindingFlags.Instance Or BindingFlags.NonPublic)
    
            sb.Append("Port:         ")
            sb.Append(CType(fi.GetValue(m_PS), String))
            sb.Append(newLine)
    
            fi = type.GetField("driverName", BindingFlags.Instance Or BindingFlags.NonPublic)
    
            sb.Append("DriverName:   ")
            sb.Append(CType(fi.GetValue(m_PS), String))
    
            Debug.Print(sb.ToString())
    
    
    
    
    



    Jacques
    Si la réponse vous satisfait, n'oubliez pas de la proposer comme réponse. Merci

    • Proposé comme réponse Aurel Bera jeudi 9 janvier 2014 10:42
    • Marqué comme réponse Aurel Bera mardi 14 janvier 2014 11:15
    mercredi 8 janvier 2014 23:51

Toutes les réponses

  • Bonjour,

    A tester...

    Lors de mon test le code ci-dessous prends mon imprimante par défaut et ne m'affiche pas de port puisque

    elle n'est pas en réseau. Je crois que le code ci-dessous est fonctionnel :-)

            Dim tmpPD As New PrintDialog
            Dim sb As New StringBuilder
            Dim newLine As String = Environment.NewLine
    
            m_PS = tmpPD.PrinterSettings
            sb.Append("PrinterName:  ")
            sb.Append(m_PS.PrinterName)
            sb.Append(newLine)
    
            Dim type As Type = GetType(PrinterSettings)
            Dim fi As FieldInfo = type.GetField("outputPort", BindingFlags.Instance Or BindingFlags.NonPublic)
    
            sb.Append("Port:         ")
            sb.Append(CType(fi.GetValue(m_PS), String))
            sb.Append(newLine)
    
            fi = type.GetField("driverName", BindingFlags.Instance Or BindingFlags.NonPublic)
    
            sb.Append("DriverName:   ")
            sb.Append(CType(fi.GetValue(m_PS), String))
    
            Debug.Print(sb.ToString())
    
    
    
    
    



    Jacques
    Si la réponse vous satisfait, n'oubliez pas de la proposer comme réponse. Merci

    • Proposé comme réponse Aurel Bera jeudi 9 janvier 2014 10:42
    • Marqué comme réponse Aurel Bera mardi 14 janvier 2014 11:15
    mercredi 8 janvier 2014 23:51
  • Bonjour hdeumpty2

    Un petit retour SVP?

    Merci!

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    vendredi 10 janvier 2014 10:30