Visual Basic.NET - Cual es el puerto de mi impresora

   
Vista:

Cual es el puerto de mi impresora

Publicado por Joaquin (28 intervenciones) el 05/07/2006 10:09:21
Hola a todos
Alguien sabe como obtener el puerto al que esta conectada una impresora determinada.
Al seleccionar una impresora de mi equipo, quiero que me indique en que puerto se encuentra conectada.
Gracias y a ver si alguien responde, que he puesto unas cuantas dudas y nadie ha respondido.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cual es el puerto de mi impresora

Publicado por Javi RM (12 intervenciones) el 05/07/2006 12:54:30
Buenas, para recuperar el puerto de cualquier impresora debes acceder al registro de Windows. Para hacerlo prueba con el siguiente código:

' Importación de libreria
Imports Microsoft.Win32

' En el Load de un form pon lo siguiente:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
Dim Impresora As String = "lexmark z55"
Dim Key As RegistryKey
Dim KeyPrinter As RegistryKey
Dim Keys() As String
Dim Valores() As String
Dim Puerto As String
Dim i As Long
Dim x As Long

' Me posiciono en la clave del registro de Windows donde se almacenan las impresoras configuradas
Key = Microsoft.Win32.Registry.LocalMachine
Key = Key.OpenSubKey("SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers", False)

' Recupero las subclaves de la clave principal
Keys = Key.GetSubKeyNames()

For i = 0 To UBound(Keys)
' Compruebo el nombre de la clave por si coincide con la impresora
If UCase(Keys(i).ToString) = UCase(Impresora) Then
' Leo los valores de la clave de la impresora
KeyPrinter = Microsoft.Win32.Registry.LocalMachine
KeyPrinter = KeyPrinter.OpenSubKey("SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\" & Keys(i).ToString, False)
Puerto = KeyPrinter.GetValue("port", "")
If Puerto = "" Then
MsgBox("No se ha encontrado la clave PORT de la impresora seleccionada", MsgBoxStyle.Critical)
Else
MsgBox("El puerto de la impresora " & Impresora & " es " & Puerto, MsgBoxStyle.Information)
End If
i = UBound(Keys)
End If
Next i

Catch ex As Exception

End Try
End Sub

Para buscar el puerot de la impresora que necesites, solo debes cambiar el valor a [impresora].

Un saludo y espero que te sirva. ; )
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cual es el puerto de mi impresora

Publicado por Joaquin (28 intervenciones) el 06/07/2006 12:09:09
Hola
Gracias por el codigo, funciona a la perfección excepto en el caso de que la impresora en la que quiero imprimir esté en red.
Buscando en el registro lo que encuentro sobre las impresoras es que estan en el puerto NExx, y lo que me falta es el Numero del NE.
Saben como obtenerlo?
Gracias
Joaquin
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cual es el puerto de mi impresora

Publicado por joaquin (28 intervenciones) el 06/07/2006 14:22:24
Gracias por todo ya lo he solucionado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cual es el puerto de mi impresora

Publicado por Misael the_misael_mm@hotmail.com (1 intervención) el 13/12/2015 17:12:11
funciona a la perfeccion tu codigo, solo le faltaria añadir esto este codigo lo podria antes de tuyo asi podrias dectectar la " impresora por defecto" y luego detecta el puerto e imprimes por el puerto.

QUEDARIA ASI:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
Imports Microsoft.Win32
Imports System.Drawing.Printing
 
Public Class Form1
 
    ' Importación de libreria
 
 
    ' En el Load de un form pon lo siguiente:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
 
            Dim ListBox1 As New ListBox
            Dim pd As New PrintDocument
            Dim Impresoras As String
            Dim nombre As String
 
            ' Default printer      
            Dim s_Default_Printer As String = pd.PrinterSettings.PrinterName
 
            ' recorre las impresoras instaladas  
            For Each Impresoras In PrinterSettings.InstalledPrinters
                ListBox1.Items.Add(Impresoras.ToString)
            Next
            ' selecciona la impresora predeterminada  
            nombre = s_Default_Printer
 
            '**************************************************************
 
            Dim Impresora As String = nombre
            Dim Key As RegistryKey
            Dim KeyPrinter As RegistryKey
            Dim Keys() As String
            Dim Valores() As String
            Dim Puerto As String
            Dim i As Long
            Dim x As Long
 
            ' Me posiciono en la clave del registro de Windows donde se almacenan las impresoras configuradas
            Key = Microsoft.Win32.Registry.LocalMachine
            Key = Key.OpenSubKey("SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers", False)
 
            ' Recupero las subclaves de la clave principal
            Keys = Key.GetSubKeyNames()
 
            For i = 0 To UBound(Keys)
                ' Compruebo el nombre de la clave por si coincide con la impresora
                If UCase(Keys(i).ToString) = UCase(Impresora) Then
                    ' Leo los valores de la clave de la impresora
                    KeyPrinter = Microsoft.Win32.Registry.LocalMachine
                    KeyPrinter = KeyPrinter.OpenSubKey("SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\" & Keys(i).ToString, False)
                    Puerto = KeyPrinter.GetValue("port", "")
                    If Puerto = "" Then
                        MsgBox("No se ha encontrado la clave PORT de la impresora seleccionada", MsgBoxStyle.Critical)
                    Else
                        MsgBox("El puerto de la impresora " & Impresora & " es " & Puerto, MsgBoxStyle.Information)
                    End If
                    i = UBound(Keys)
                End If
            Next i
 
        Catch ex As Exception
 
        End Try
    End Sub
 
End Class


MAS INFORMACION ME ESCRIBEN. HASTA LUEGO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar