Meilleur auteur de réponses
Comment lire les propriétés du port d'une imprimante en VB .Net?

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.
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
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
-
Bonjour hdeumpty2
Un petit retour SVP?
Merci!
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.